Как сделать несколько полей - поиск фраз в Lucene? - PullRequest
3 голосов
/ 24 февраля 2011

Заголовок спрашивает все это ... Я хочу сделать поиск по нескольким полям - фразы в Lucene .. Как это сделать?

например: У меня есть поля как String s[] = {"title","author","content"};
Я хочу найти harry potter по всем полям. Как мне это сделать?

Может кто-нибудь привести пример фрагмента?

Ответы [ 2 ]

5 голосов
/ 24 февраля 2011
  1. Используйте MultiFieldQueryParser, его - QueryParser, который создает запросы для поиска по нескольким полям. .

  2. Другой способ заключается в использовании Создать BooleanQuery, состоящий из TermQurey (в вашем случае запрос фразы).

  3. Третий способ - включить содержимоедругих полей в ваше поле 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)

Надеюсь, что этопомогает.

0 голосов
/ 24 февраля 2011

усиленный поиск в Google показал это:
http://lucene.472066.n3.nabble.com/Phrase-query-on-multiple-fields-td2292312.html.
Поскольку он самый последний и лучший, я пойду с его подходом, я думаю ... Тем не менее, это может помочь кому-то, кто ищет что-то вроде меня ...

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...