代码之家  ›  专栏  ›  技术社区  ›  Kuntal Basu

Solr搜索查询类似于%text%

  •  2
  • Kuntal Basu  · 技术社区  · 15 年前

    我在用Solr。我需要搜索那些与提供的文本部分匹配的条目

    功能应该类似于sql查询

    喜欢%text%

    我该怎么做?

    3 回复  |  直到 15 年前
        1
  •  4
  •   zinan.yumak    15 年前

    您应该考虑使用n-gram分析而不是asteriks。它比n克慢。看看, N-Gram Tokenizer

        2
  •  11
  •   Kuntal Basu    15 年前

    我解决了我的问题。。。

    我只需要用 *text*

    谢谢大家

        3
  •  0
  •   Kuntal Basu    15 年前

    谢谢吉南。尤马克

    我又用你的方式做了一次

    <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>
    

    并对字段使用此类型

    推荐文章