Как я могу построить запрос Lucene с двумя или более предложениями "в" - PullRequest
1 голос
/ 08 июля 2011

Мой документ в Lucene (действительно, solr) имеет несколько полей, давайте назовем их textField1, numField1, numField2.

У моего приложения будет список поисковых терминов words1, с которыми нужно запросить textField, списокЧисла list1 для numField1 и другой список чисел list2 для numField2.

Я хотел бы создать запрос Lucene, который делает это:

textField matches one or more words in words1
AND either (
    numfield1 is one of the values in list1 OR
    numfield2 is one of the values in list2)

Я пытаюсь использовать BooleanQuery для сборкизапрос, но я не совсем уверен, как это сделать.Кажется, логические операции AND и OR отображаются в различные перечисления в BooleanClause.Occurs, но я не могу почерпнуть из документации, как они сопоставляются друг с другом.

Ответы [ 2 ]

2 голосов
/ 09 июля 2011

Я рекомендую вам получить Люк и играть с ним, пока вы не убедитесь, что ваш запрос верен и возвращает то, что вы хотите.

Когда вы закончите, вы можете взглянуть на проанализированный запрос (подсказка: нажмите на Объяснить структуру ), и он покажет вам, как складываются BooleanQueries.

Просто убедитесь, что вы используете тот же анализатор, который вы использовали для индексации документов.

0 голосов
/ 16 июля 2011

вы должны использовать

textfieldl1: слова1 И (список1: numfield1 ИЛИ список1: numfield2)

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