lucene3.0.3 | получить правильный документ в случае множественного логического запроса в критериях поиска - PullRequest
0 голосов
/ 18 февраля 2011

Я использую запрос как

criteria = (sql OR sqlserver OR "sql server") AND java AND delphi .

В этом случае, когда я использую парсер по умолчанию, как указано ниже:

QueryParser parser = new QueryParser(Version.LUCENE_CURRENT, field, analyzer);
Query query = parser.parse(criteria);

Я получаю такое же количество документов, когда яиспользуя QueryParser.OR_OPERATOR в приведенном ниже коде:

QueryParser parser = new QueryParser(Version.LUCENE_CURRENT, field, analyzer);
parser.setDefaultOperator(QueryParser.OR_OPERATOR);
Query query = parser.parse(criteria); 

, что неверно.пожалуйста!предложи мне выполнимое решение.

как получить правильный документ в случае множественного логического запроса в критериях поиска?

Ответы [ 2 ]

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

В вашем коде ваш запрос выполняет поиск по всем документам в индексе, где поле содержит термины "java" и "delphi", а также один или несколько из {sql, sqlserver, "sql server"}. В том, что вы представили, нет ничего синтаксического или концептуального, поэтому я подозреваю, что проблема в том, как поле было проиндексировано. Я бы порекомендовал взять Люк и использовать его для анализа вашего индекса.

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

Если в вашем запросе указан оператор, как вы это сделали:

критерий = (sql ИЛИ sqlserver ИЛИ "sql server") И java И delphi

, тогда установка оператора по умолчанию не имеет никакого эффекта. Если вместо этого вы указали свой запрос следующим образом:

критерии = (sql sqlserver "сервер sql") java delphi

затем установка оператора по умолчанию на ИЛИ приведет к тому, что запрос будет интерпретирован как:

критерии = (sql ИЛИ sqlserver ИЛИ "sql server") ИЛИ java ИЛИ delphi

Кстати, оператор по умолчанию для QueryParser - ИЛИ - см. Lucene QueryParser javadoc

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