【问题标题】:How to do partial search with Solr?如何使用 Solr 进行部分搜索?
【发布时间】:2020-09-09 09:29:58
【问题描述】:

我有一个在 Solr 中编入索引的数据,例如“S-1234567890”。 如果我尝试以全值搜索它会给出结果。 但是用 67890* 搜索就不行了。

请帮忙,部分文本搜索时如何搜索数据?

【问题讨论】:

  • 这个值你用的是什么领域之王? (例如字符串、text_general、自定义?)

标签: java solr solrcloud


【解决方案1】:

尝试为您的字段使用以下字段类型。

字段类型定义

<fieldType name="text_ngrm" class="solr.TextField" positionIncrementGap="100">
    <analyzer type="index">
       <tokenizer class="solr.WhitespaceTokenizerFactory"/>
        <filter class="solr.NGramFilterFactory" minGramSize="1" maxGramSize="50"/>
        <filter class="solr.LowerCaseFilterFactory"/>
     </analyzer>
     <analyzer type="query">
       <tokenizer class="solr.WhitespaceTokenizerFactory"/>
       <filter class="solr.LowerCaseFilterFactory"/>
     </analyzer>
     </fieldType>

您可以定义如下字段

<field name="name" type="text_ngrm" indexed="true" stored="true"/>

下面也可以试试

<fieldType name="text_ngrm" class="solr.TextField" positionIncrementGap="100">
        <analyzer type="index">
           <tokenizer class="solr.WhitespaceTokenizerFactory"/>
            <filter class="solr.NGramFilterFactory" minGramSize="1" maxGramSize="50"/>
            <filter class="solr.LowerCaseFilterFactory"/>
         </analyzer>
         <analyzer type="query">
          <tokenizer class="solr.KeywordTokenizerFactory"/>
           <filter class="solr.LowerCaseFilterFactory"/>
         </analyzer>
      </fieldType>

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-03-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-12-03
    • 2014-12-20
    • 2011-12-26
    • 1970-01-01
    相关资源
    最近更新 更多