Возвращать имя поля Lucene при совпадении запроса - PullRequest
3 голосов
/ 16 июня 2011

Итак, я использую MultiFieldQueryParser в Lucene 3.0.2, и я дал ему несколько полей.Я хочу выяснить, какое поле соответствует запросу;Я искал здесь, и один пользователь сказал, что нет абсолютно никакого способа сделать это.Это правда?Если да, может ли кто-нибудь порекомендовать способ обойти эту или другую систему, которая позволила бы мне это сделать?

Я могу поместить весь документ в одно поле, например, «содержимое», но я думаю, что это создает проблемуеще хуже.

Я хочу сделать запрос к базе данных, например, с Брэдом, и посмотреть, был ли запрос получен по имени фильма, имени актера, имени режиссера и т. д. и т. д.

Спасибо

1 Ответ

0 голосов
/ 25 июня 2011

Я бы настоятельно рекомендовал использовать BooleanQuery со стандартным QueryParser:

BooleanQuery booleanQuery = new BooleanQuery();

FuzzyQuery field1Query = new FuzzyQuery(new Term("field1", searchTerm), 0.3f, 1, 10);
FuzzyQuery field2Query = new FuzzyQuery(new Term("field2", searchTerm), 0.3f, 1, 10);

booleanQuery.add(field1Query , BooleanClause.Occur.SHOULD);
booleanQuery.add(field1Query , BooleanClause.Occur.SHOULD);

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

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