Magento SOLR нечеткий поиск

Я использую поиск SOLR в magento и пытаюсь использовать возможности нечеткого поиска SOLR. Но пока, кажется, не повезло.

Я пытался использовать тильду (~) в конце поискового запроса, а также пытался использовать «PorterStemFilterFactory», которая на данный момент является лучшей фабрикой стеблей, которую я знаю. Но это не дает мне никаких результатов. Например; У меня есть продукты под названием "Шираз". Таким образом, нечеткий поиск вернет те же результаты, что и при поиске с использованием «шираг» или «шраг».

Это мой раздел схемы (я даю только английский раздел, потому что это единственная часть, которую я использую)

<fieldType name="text_en" class="solr.TextField" positionIncrementGap="100">
        <analyzer type="index">
            <tokenizer class="solr.WhitespaceTokenizerFactory"/>
            <charFilter class="solr.MappingCharFilterFactory" mapping="mapping-ISOLatin1Accent.txt"/>
            <filter class="solr.EdgeNGramFilterFactory" minGramSize="3" maxGramSize="10" />
            <!--
                In this example, we will only use synonyms at query time.
                <filter class="solr.SynonymFilterFactory" synonyms="index_synonyms.txt" ignoreCase="true"
                    expand="false"/>
            -->
            <!--
                Case insensitive stop word removal. Add enablePositionIncrements=true in both the index and query
                analyzers to leave a 'gap' for more accurate phrase queries.
            -->
            <filter class="solr.StopFilterFactory" ignoreCase="true" words="stopwords_en.txt"
                    enablePositionIncrements="true"/>
            <filter class="solr.WordDelimiterFilterFactory" generateWordParts="1" generateNumberParts="1"
                    catenateWords="1" catenateNumbers="1" catenateAll="0" splitOnCaseChange="1"/>
            <filter class="solr.LowerCaseFilterFactory"/>
            <filter class="solr.SnowballPorterFilterFactory" language="English" protected="protwords_en.txt"/>
        </analyzer>
        <analyzer type="query">
            <tokenizer class="solr.WhitespaceTokenizerFactory"/>
            <charFilter class="solr.MappingCharFilterFactory" mapping="mapping-ISOLatin1Accent.txt"/>
            <filter class="solr.SynonymFilterFactory" synonyms="synonyms_en.txt" ignoreCase="true" expand="true"/>
            <filter class="solr.StopFilterFactory" ignoreCase="true" words="stopwords_en.txt"
                    enablePositionIncrements="true"/>
            <filter class="solr.WordDelimiterFilterFactory" generateWordParts="1" generateNumberParts="1"
                    catenateWords="0" catenateNumbers="0" catenateAll="0" splitOnCaseChange="0"/>
            <filter class="solr.LowerCaseFilterFactory"/>
            <filter class="solr.SnowballPorterFilterFactory" language="English" protected="protwords_en.txt"/>
            <filter class="solr.PorterStemFilterFactory" />
        </analyzer>
    </fieldType>

Также это ссылки, которые я пробовал:

http://johntwang.com/blog/2011/09/05/Fuzzy-and-Document-Searching-with-WebSolr-and-Heroku/ http://docs.lucidworks.com/display/solr/The+Standard+Query+Parser http://www.rqna.net/qna/mnuhwh-solr-fuzzy-search-for-similar-words.html


person blackRider    schedule 22.02.2013    source источник


Ответы (1)


См. раздел Solr Fuzzy Search для похожих слов и Нечеткий поиск Solr/Lucene слишком медленный

Если вы ищете автоматическое предложение, то использование EdgeNGramFilter определенно является другим вариант для рассмотрения.

person arun    schedule 22.02.2013