2013-11-08 2 views
2

Я использую Solr 4.4.0, работающий на Tomcat 7.0.29. Solrconfig.xlm поставляется как отдельно (за исключением исходного каталога Solr, конечно). Я мог бы передать schema.xml, хотя я сомневаюсь, что это очень поможет, как будет показано ниже.Ответ на приглашение Lucene/Solr

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

Если я выбираю все документы, содержащие «текст» в тексте («паутина»), то результат равен 29, что тоже правильно.

Если я ищу все документы, которые не содержат «россия» («NOT (россия)»), результат по-прежнему остается правильным (202).

Если я ищу все документы, содержащие «сеть» и не содержащие «россия» («сеть И НЕ (россия)»), результат, опять же, правильный (28, потому что документ, содержащий «россия» "также содержит" сеть ").

Но если я ищу все документы, содержащие «сеть» или не содержащие «россия» («web OR NOT (россия)»), результат все равно 28, хотя я должен получить 203 совпадения (весь набор).

У кого-нибудь есть объяснение?

Для информации, И и ИЛИ работать правильно, если я не использовать не где-то в запросе, то есть: «веб и Россия» -> OK «веб ИЛИ Россия» -> OK

+1

Добавьте текст в часть EDIT вашего qn в качестве ответа и примите свой собственный ответ. Это делает qn ответом (и ответ на ответ дает вам 10 вместо upvote на qn, ​​который дает вам всего 5 :), если вы заботитесь о своем репутации, то есть.). – arun

+1

Есть несколько запутанных случаев с таким типом запросов, и причина в том, что логические операторы не являются действительно логическими операторами, а скорее переводятся в предложения 'MUST' /' SHOULD'/'MUST_NOT', так как запросы Lucene действительно работаю. Я рекомендую использовать операторы префикса +/- для запросов lucene, если это вообще возможно, чтобы избежать путаницы и более эффективно использовать функциональность Lucene. См. Эту замечательную статью: [Почему не И, ИЛИ, И НЕ?] (Http://searchhub.org/2011/12/28/why-not-and-or-and-not/) для получения более полной информации о тема. – femtoRgon

+0

ОК, спасибо arun, я просто так сделал. –

ответ

0

У меня есть решение от Yonik Seeley, которое должно перевести NOT (россия) в (*: * -russia), так что положительное значение (: т.е. все документы) можно использовать для вычитания из (-русская). Это решение работает очень хорошо. Я по-прежнему считаю, что было бы неплохо изменить парсер так, что запрос stringhtforward «web OR NOT (russia)» будет работать без перевода.

Смежные вопросы