How to incorporate multiple fields in QueryParser?

后端 未结 4 966
无人共我
无人共我 2020-12-12 13:41
Dim qp1 As New QueryParser(\"filename\", New StandardAnalyzer())
Dim qp2 As New QueryParser(\"filetext\", New StandardAnalyzer())
.
.

I am using th

4条回答
  •  一整个雨季
    2020-12-12 14:41

    ** you can also use MultiFieldQueryParser to search in all available fields.**

    E.g

    Dim queryParser = New MultiFieldQueryParser(Version.LUCENE_29, 
    indexReader__1.GetFieldNames(IndexReader.FieldOption.ALL).ToArray(), analyzer)
    

    here is complete an example.

    //get index directory
    Dim directory As Directory = FSDirectory.Open(New DirectoryInfo(HostingEnvironment.MapPath(VirtualIndexPath)))
    
    //get analyzer
    Dim analyzer As Analyzer = New StandardAnalyzer(Version.LUCENE_29)
    
    //get index reader and searcher
    Dim indexReader__1 As IndexReader = IndexReader.Open(directory, True)
    Dim indexSearch As Searcher = New IndexSearcher(indexReader__1)
    
    //add all possible fileds in multifieldqueryparser using indexreader getFieldNames method
    Dim queryParser = New MultiFieldQueryParser(Version.LUCENE_29, indexReader__1.GetFieldNames(IndexReader.FieldOption.ALL).ToArray(), analyzer)
    Dim query = queryParser.Parse(Criteria)
    Dim resultDocs As TopDocs = Nothing
    
    //perform search
    resultDocs = indexSearch.Search(query, indexReader__1.MaxDoc())
    Dim hits = resultDocs.scoreDocs
    

    hope that help

提交回复
热议问题