Заставить нечеткий поиск работать на Sunspot? - PullRequest
0 голосов
/ 12 ноября 2011

У меня в базе данных или в Solr указываются следующие 2 продукта: Total War: Shogun 2 [Скачать] и Яйца .

Что я хочу найтичтобы быть в состоянии сделать это сопоставить эти 2 продукта с ошибками, например:

"Egggs", "Eggz", "Eg", "Egs" and "Shogn Download", "Totle War","Tutal War: Shogunn 2 Download" и т. д.

РЕДАКТИРОВАТЬ (работает несколько):

ЭтоВы начнете, все еще испытывая проблемы с использованием различных символов в поиске, то есть только такие вещи, как «Яйца» и «Ценное молоко Витамин D с высокой ценностью» не могут быть написаны с ошибками "Total War: Shogun 2" .

Новый код:

<fieldType name="text" class="solr.TextField" omitNorms="false">
        <analyzer type="index">
            <tokenizer class="solr.WhitespaceTokenizerFactory"/>
            <filter class="solr.WordDelimiterFilterFactory" stemEnglishPossessive="1" splitOnNumerics="1" splitOnCaseChange="1" generateWordParts="1" generateNumberParts="1" catenateWords="1" catenateNumbers="1" catenateAll="1" preserveOriginal="1"/>
            <filter class="solr.PhoneticFilterFactory" encoder="DoubleMetaphone" inject="true"/>
            <filter class="solr.LowerCaseFilterFactory"/>
            <filter class="solr.EdgeNGramFilterFactory" minGramSize="1" maxGramSize="50" side="front"/>
        </analyzer>
        <analyzer type="query">
            <tokenizer class="solr.WhitespaceTokenizerFactory"/>
            <filter class="solr.WordDelimiterFilterFactory" stemEnglishPossessive="1" splitOnNumerics="1" splitOnCaseChange="1" generateWordParts="1" generateNumberParts="1" catenateWords="1" catenateNumbers="1" catenateAll="1" preserveOriginal="1"/>
            <filter class="solr.PhoneticFilterFactory" encoder="DoubleMetaphone" inject="true"/>
            <filter class="solr.LowerCaseFilterFactory"/>
        </analyzer>
    </fieldType>

Идеально, чтобы у меня был поиск, как у Google, где он довольно неплохо справляетсяисправление вашего орфографии будь то строчные, прописные и с парой ошибок.Как бы сделать мой поиск похожим на то, что делает Google?

1 Ответ

2 голосов
/ 12 ноября 2011

Нечеткие поиски не подвергаются анализу времени запроса.
Таким образом, есть вероятность, что ваш запрос не соответствует индексным терминам.

Термины в вышеупомянутой конфигурации подвергаются фильтрации нижнего регистра во время индексации, которая будет хранить все термины в нижнем регистре.
И поиск яиц никогда не даст никаких результатов, так как яйца не будут соответствовать яйцам. Поисковые термины должны быть явно в нижнем регистре.

Кроме того, в вышеуказанном конфиге анализ времени индекса сильно отличается от анализа времени запроса.
Обычно рекомендуется иметь похожие фильтры во время запроса и индексации, чтобы индексированные термины соответствовали искомым терминам.

solr.PorterStemFilterFactory может привести к совершенно другому корню для искомого термина и никогда не совпадать с индексированными терминами.

Пересмотрите вашу конфигурацию. Может быть, проверить пример схемы Solr XML для справки.

...