Поисковый запрос Solr похож на% text% - PullRequest
2 голосов
/ 23 ноября 2010

Я использую Solr. Мне нужно найти те записи, которые также частично совпадают с предоставленным текстом

функциональность должна быть похожа на SQL-запрос

как% text%

как мне это сделать?

Ответы [ 3 ]

11 голосов
/ 23 ноября 2010

Я решил свою проблему ...

просто мне нужно использовать *text*

Спасибо всем

4 голосов
/ 29 ноября 2010

Вам следует рассмотреть возможность использования n-граммового анализа вместо звездочек.Это медленный по сравнению с н-грамм.Взгляните на N-Gram Tokenizer

0 голосов
/ 03 декабря 2010

Спасибо zinan.yumak

Я сделал это снова по-вашему

<fieldType name="text_en" class="solr.TextField" positionIncrementGap="100">

    <analyzer type="index">
        <tokenizer class="solr.StandardTokenizerFactory" />
        <filter class="solr.StandardFilterFactory"/>
        <filter class="solr.SynonymFilterFactory" synonyms="index_immo_synonyms_en.txt" ignoreCase="true" expand="true" />
        <filter class="solr.WordDelimiterFilterFactory" generateWordParts="1" generateNumberParts="1" catenateWords="1"
            catenateNumbers="1" catenateAll="0" splitOnCaseChange="1" />
        <filter class="solr.LowerCaseFilterFactory"/>
        <filter class="solr.StopFilterFactory" ignoreCase="true" words="immo_stopwords_en.txt" />
        <filter class="solr.SnowballPorterFilterFactory" language="English"  protected="protwords_en.txt"/>
        <filter class="solr.RemoveDuplicatesTokenFilterFactory"/>
    </analyzer>

    <analyzer type="query">
        <tokenizer class="solr.WhitespaceTokenizerFactory" />
        <filter class="solr.StandardFilterFactory"/>
        <!-- we only use synonyms at index time <filter class="solr.SynonymFilterFactory" synonyms="index_immo_synonyms_en.txt"
             ignoreCase="true" expand="true"/>. Having expand="false" at query time, all equivalent synonyms will be reduced
             to the first in the list -->
        <filter class="solr.SynonymFilterFactory" synonyms="query_immo_synonyms_en.txt" ignoreCase="true" expand="false" />
        <filter class="solr.WordDelimiterFilterFactory" generateWordParts="1" generateNumberParts="1" catenateWords="0"
            catenateNumbers="0" catenateAll="0" splitOnCaseChange="1" />
        <filter class="solr.LowerCaseFilterFactory"/>
        <filter class="solr.StopFilterFactory" ignoreCase="true" words="immo_stopwords_en.txt" />
        <filter class="solr.SnowballPorterFilterFactory" language="English"  protected="protwords_en.txt"/>
        <filter class="solr.RemoveDuplicatesTokenFilterFactory"/>
    </analyzer>
</fieldType>

И используйте этот тип для полей

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...