Solr Query с предложением LIKE - PullRequest
7 голосов
/ 18 января 2012

Я работаю с Solr, и я хотел бы знать, возможно ли в запросе предложение LIKE. Например, я хочу знать все организации с названием «Нью-Йорк» в названии. В SQL это будет написано как Имя LIKE 'New York%'.

Мой вопрос - как написать LIKE-запрос в Solr?

Я использую библиотеку SolrNet, если это имеет значение.

Ответы [ 2 ]

7 голосов
/ 18 января 2012

Вы просто ищете "Нью-Йорк", но сначала вам нужно правильно настроить анализатор вашего поля. Например, вы можете начать с типа поля, например text_general, как определено в схеме Solr по умолчанию . Этот тип поля будет разбиваться на пробелы и другие распространенные разделители слов, затем будет применяться фильтр стоп-слов, а затем строчные буквы, чтобы сделать поиск без учета регистра.

Подробнее об анализаторах в вики Solr .

6 голосов
/ 18 января 2012

Если вы используете Solr 3.1 или новее, посмотрите на Extended DisMax Query Parser, который поддерживает подстановочные запросы.Вы можете включить его, используя <str name="defType">edismax</str> в конфигурации обработчика запросов.

Затем вы можете использовать запрос типа title:New York* с тем же поведением, что и запрос с предложением likeОсновное различие между моим ответом и принятым заключается в том, что вы можете даже искать фрагмент слова, используя подстановочные знаки.Например, New Yorkers будет соответствовать в этом случае.К сожалению, у вас могут возникнуть проблемы с чувствительными к регистру запросами, даже если вы используете LowerCaseFilterFactory.Взгляните здесь чтобы узнать больше.Большинство из этих проблем будут исправлены в выпуске solr 3.6, так как проблема SOLR-2438 была решена.

...