Используйте MultiFieldQueryParser
, его - QueryParser, который создает запросы для поиска по нескольким полям. .
Другой способ заключается в использовании Создать BooleanQuery, состоящий из TermQurey (в вашем случае запрос фразы).
Третий способ - включить содержимоедругих полей в ваше поле default
.
Добавить Вообще говоря, запросы к нескольким полям не являютсяЛучшая практика для пользовательских запросов.Чаще всего все искомые слова индексируются в поле содержимого или ключевых слов путем объединения различных полей.
Обновление Использование:
Query query = MultiFieldQueryParser.parse(Version.LUCENE_30, new String[] {"harry potter","harry potter","harry potter"}, new String[] {"title","author","content"},new SimpleAnalyzer());
IndexSearcher searcher = new IndexSearcher(...);
Hits hits = searcher.search(query);
MultiFieldQueryParser
разрешит запрос следующим образом: (См. Javadoc)
Анализирует запрос, который выполняет поиск в указанных полях.Если указано x полей, это эффективно создает:
(field1: query1) (field2: query2) (field3: query3) ... (fieldx: queryx)
Надеюсь, что этопомогает.