2016-05-04 4 views
0

Я использую solr для корпоративного приложения. Пока это работает хорошо, поскольку я использую поле ngram для поиска. Он корректно работает для частичных запросов (соответствует индексированным ngrams). Но проблема у меня есть, как обеспечить соответствие точных запросов ?. Например, запрос «Тест 1» должен совпадать точно так же, как и когда пользователь вводит его с двойными кавычками. В настоящее время, поскольку я использовал некоторые токенизаторы и фильтры, двойные кавычки отфильтровываются, нет разницы в запросах "test 1", "tEst 1" or "TEST 1" (то есть из-за используемой мной цепи анализатора, но это необходимо для работы с ngrams и частичным поиском).Solr Search Field Best Practices

В настоящее время я ищу против поля запроса ngram. Что нужно сделать для точного соответствия запросов, что мне делать? Какова наилучшая практика ?. в настоящее время я считаю, что нужно идентифицировать двойные кавычки с клиентской стороны и изменить поле запроса в исходное поле (с помощью ngrams). Но я чувствую, что должен быть лучший способ сделать это, так как проблема, которую я имею, является общей, а solr - полная поисковая система уровня предприятия.

ответ

0

Для этого вы можете добавить еще field и добавить string в качестве fieldType для того же и проиндексировать его тем же.

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

И если вы хотите выполнить частичный поиск .. вы можете запросить более раннее поле, которое индексируется ngram.

ИЛИ .. Вот еще один способ, которым вы можете попробовать.

Вы определили текущий тип поля, используя ngram. При этом при индексировании вы можете определить токенизатор ngram, и для запроса вы указываете только ключевое слово Tokenizer и фабрику фильтра нижнего регистра.

При индексировании текст будет обозначен, и при выполнении запроса он не будет.

+0

Итак, вы имеете в виду, я должен оформить двойные цитаты со стороны клиента и изменить поле запроса в соответствии с этим ?. Я подумал об этом, но разве это не общая проблема, которую solr, возможно, уже решила? Я думал, что могу изобрести колесо – wattale

+0

@wattale: пожалуйста, проверьте ответ. Я добавил еще один вариант ... –

+0

Но вопрос в том, как я могу справиться, когда пользователь намеренно вводит запрос с двойными котировками ?. В вашем подходе нам нужно будет использовать механизм для нормализации индекса и запроса обоих, тогда нет смысла двойных котировок. Он также должен соответствовать полям, чувствительным к регистру. Я нашел поле pf в партитуре edismax. Я смотрю на него :) – wattale