Lucene поиск со сложным запросом - PullRequest
1 голос
/ 19 марта 2009

Вот что я хочу сделать, используя псевдокод:

lucene.Find((someField == "bar" || someField == "baz") && anotherField == "foo");

Или по-английски: «найти все документы, где someField означает« bar »или« baz », а где anotherField означает« foo »».

Как я могу сделать такой запрос с Lucene?

1 Ответ

5 голосов
/ 19 марта 2009

В синтаксисе запроса Lucene:

+(someField:bar someField:baz) +anotherField:foo

«+» означает обязательный термин, как и синтаксис поиска Google. Круглые скобки группируют термины, чтобы действовать как один термин. Без «+» (или «-») термин является необязательным; по крайней мере одно из условий должно совпадать, и чем больше совпадений, тем выше оценка.

Передайте эту строку в QueryParser, чтобы создать объект Query. Затем запрос может быть передан одному из нескольких методов поиска, в зависимости от ваших потребностей.

...