In lucene.net can we search for a content without giving field name..and it will search in all fields that are indexed?

前端 未结 3 1112
一整个雨季
一整个雨季 2021-02-19 14:46

In lucene.net can we search for a content without giving field name..and it will search in all fields that are indexed.

3条回答
  •  忘了有多久
    2021-02-19 14:55

    You cannot search for content without giving field name, however you can 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

提交回复
热议问题