В lucene.net мы можем искать контент без указания имени поля... и он будет искать во всех проиндексированных полях?

В lucene.net мы можем искать контент без указания имени поля.. и он будет искать во всех проиндексированных полях.

Ответы

Ответ 1

Вы не можете искать контент без указания имени поля , однако вы можете использовать MultiFieldQueryParser для поиска во всех доступных полях.

например

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

здесь приведен пример.

'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

надеюсь, что помощь

Ответ 2

Он будет искать все поля, указанные в схеме, по умолчанию.

Ответ 3

Используйте MultiFieldQueryParser, чтобы проанализировать ваши запросы и предоставить ему массив имен полей, которые вы хотите найти.

Запрос не требует специального синтаксиса. Если ваш запрос "cat hat", он будет искать все указанные поля для любого из этих условий. Если ваш оператор по умолчанию - AND, он потребует, чтобы каждый термин был найден как минимум в одном поле.