Подстроки матчей в Solr
Вопрос
Я не могу выяснить, как найти подстроки спичек с Solr, я понял матчи на основе префикса, поэтому я могу получить ветчину, чтобы соответствовать гамбургеру.
Как бы я получил поиск «бургера», чтобы соответствовать гамбургеру? Я попытался бургер Но это бросило ошибку «*» или «?» Не допускается как первый персонаж в подстановочной кладке.
Как я могу соответствовать подстрадателям, используя Solr?
Решение
Вы можете включить это, но это будет очень ресурс голоден (например, поиск суффикса).
Видеть: http://lucene.472066.n3.nabilb.com/leading-wildcard-search-td522362.html.
Цитируя список рассылки:Работают вокруг? Представьте, что вы делаете второй индекс (или добавление другого поля) со всеми терминами, написанными задом наперед.
=>
Смотрите Add ReversestringFilter https://issues.apache.org/jira/browse/lucene-1398.
и поддержка эффективного поиска ведущих подстановочных знаков: https://issues.apache.org/jira/browse/solr-1321.
На данный момент номера .apache.org кажется вниз. Попробуйте использовать, например, кэш Google.
Другие советы
Если кто -то заканчивается здесь после поиска «подстроки апачелр», есть более простое решение для этого: https://drupal.stackexchange.com/a/27956/10419 (от https://drupal.stackexchange.com/questions/26024/how-can-i-make-search-with-s-substring-of-a-word.)
Добавьте NGRAMFILTER в определение типа текста в Schema.xml в каталоге Config Solr.
<fieldType name="text" class="solr.TextField" positionIncrementGap="100">
<analyzer type="index">
<filter class="solr.EdgeNGramFilterFactory" minGramSize="3" maxGramSize="25" />
Как указывалось ранее в связь Вы можете использовать ведущие подстановочные знаки с Edismax (ExtendedDismaxqParser). Просто попробуйте посмотреть, достаточно ли достаточно быстро.
Некоторые дополнительные данные о вышеупомянутой реверсировании также можно найти здесь: solr.reversedwildcardfilterfactory