У меня небольшая проблема при поиске с помощью SOLR 4.0 и попытке фразового запроса.
У меня есть поле под названием «idx_text_general_ci», которое является нечувствительным к регистру (все в нижнем регистре) полем, состоящим из всех полей.
Когда я пытаюсь найти фразу (морской слесарь), мой SOLR отказывается искать фразу, вместо этого разбивая фразу на 2 слова -
/select?defType=edismax&q=idx_text_general_ci:marine%20fitter&debugQuery=true
debugQuery = true вывод ниже:
<lst name="debug">
<str name="rawquerystring">idx_text_general_ci:marine fitter</str>
<str name="querystring">idx_text_general_ci:marine fitter</str>
<str name="parsedquery">
(+(idx_text_general_ci:marine DisjunctionMaxQuery((id:fitter))))/no_coord
</str>
<str name="parsedquery_toString">+(idx_text_general_ci:marine (id:fitter))</str>
Как вы можете видеть выше, он разбивает запрос на 2 части (idx_text_general_ci: marine, затем id: fitter).
Проблема, с которой я столкнулся, заключается в том, что у меня есть точное совпадение для слова «морской слесарь», которое дважды появляется в поле idx_text_general_ci, но имеет меньшую оценку, чем документ, в котором слово «морской» встречается 3 раза. Я знаю, что этого не будет, если мой SOLR будет искать поле с фразой, как ожидалось.
Если я заключу фразу в кавычки, я получу ноль результатов.
Мы будем очень благодарны за любую помощь или толчок в правильном направлении.
заранее спасибо
Алекс