2014-09-16 10 views
0

У меня есть сайт электронной коммерции, где я реализую Solr (используя библиотеку Solarium), и есть названия продуктов и описания, которые содержат двойные кавычки (обычно для дюймов). Прежде чем я начал разбирать часть анализатора и токенизатора Solr, я просто присвоил тип данных text_en_splitting полям, которые будут содержать эти данные. Если кто-то ищет фразу - blue 1 "binder - двойная кавычка удаляется, и первые 10 результатов, возвращаемых, не обязательно являются связующими. Полученные результаты, похоже, соответствуют слову blue и числу 1 (они aren ' t binders). Просматривая анализ запроса в Solr admin, я вижу, что двойные кавычки удаляются из WordDelimiterFilterFactory. Мне нравится WordDelimiterFilterFactory по другим причинам (например, по поводу фразы post-it note), поэтому я пытаюсь найти подходящую среду здесь. Есть ли лучший способ как для полей индекса, так и для запросов, которые содержат двойные кавычки, которые должны храниться на месте при выполнении поиска (потому что они на самом деле что-то означают)?Solr и поиск фраз с двойными кавычками

ответ

0

Что я в итоге сделал, добавляя замените фильтр перед разделителем слов и используйте слово inch.

<filter class="solr.PatternReplaceFilterFactory" pattern='(\d)"' replacement='$1 inch' replace="all"/> 
0

Solr Запрос Парсеры (например, DisMax) использовать вызов

SolrPluginUtils.stripUnbalancedQuotes(userQuery)) 

удалить несбалансированные кавычки. Сбалансированные кавычки предназначены для фразовых запросов.

Таким образом, вы должны действительно разработать свой собственный синтаксический анализатор запросов.

Вы также можете рассмотреть возможность замены котировок на ножки на переднем конце, прежде чем запрос поступит в Solr.

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