2015-04-10 3 views
0

Я использую фильтр запросов с Solr 4.10.0/4.10.0 Lucene и имеют странную ситуацию, в то время какSolr: Странное поведение с экранированием и избежать

  • fq=areas:Finanz- & Rechnungswesen и
  • fq=areas:"Finanz- & Rechnungswesen"

выдают такой же комплект документов,

  • fq=areas:E-Commerce & Neue Medien и
  • fq=areas:"E-Commerce & Neue Medien"

не в последнем случае –, набор результатов пуст.

я выполнил запросы в Solr интерфейса администратора и проверить в Solr журнал, что фильтры правильно перевести на запрос Params

  • fq=areas:Finanz-+%26+Rechnungswesen
  • fq=areas:"Finanz-+%26+Rechnungswesen"
  • fq=areas:E-Commerce+%26+Neue+Medien
  • fq=areas:"E-Commerce+%26+Neue+Medien"

соответственно. Только в последнем случае набор результатов пуст. Может ли кто-нибудь объяснить, почему это так? К сожалению, Spring Data Solr цитирует многослотовые фильтры, поэтому он дает неверный результат в этом случае.

+2

вы пробовали 'Criteria.expression', который примет аргумент как есть? Не могли бы вы поделиться фрагментом, где вы строите запрос? –

+0

@ ChristophStrobl: Большое спасибо за ваше предложение; Я попробовал (построил запрос изначально без кавычек), и он работает действительно, но только в специальных сценариях. Когда я использую более сложный запрос (две строки, связанные с OR), я не нашел никакого запроса, который дает правильный результат , Вместо этого я нашел уродливое обходное решение, используя расстояние levenshtein: новые критерии (fieldName) .fuzzy (значение, 1); вместо новых критериев (fieldName).есть (значение); возвращает желаемый набор документов. – jpvee

ответ

0

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

фильтр запроса areas:Finanz- & Rechnungswesen будет анализироваться как: areas:Finanz- {default_field}:rechnungswesenгде {} default_field является то, что было настроено в качестве поля по умолчанию, когда один не был доставлен.

Чтобы легче отладить эти запросы, просмотрите результаты с помощью debugQuery=true, это также можно сделать в Solr Admin UI's query interface.

Чтобы убедиться, что все условия ограничены ваши областей поля, используйте круглые скобки, например:

areas:(Finanz- & Rechnungswesen)

Для получения более подробной информации, смотрите на Solr синтаксического анализа запроса синтаксисе: https://wiki.apache.org/solr/SolrQuerySyntax#Default_QParserPlugin:_LuceneQParserPlugin

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

  • Нет связанных вопросов^_^