如何使用Solr进行部分搜索?

问题描述

我有一个在Solr中建立索引的数据,例如“ S-1234567890”。 如果我尝试以全价进行搜索,则会得到结果。 但是,当使用67890 *搜索时,它将无法正常工作。

请提供部分文本搜索时如何搜索数据?

解决方法

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

字段类型定义

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

相关问答

错误1:Request method ‘DELETE‘ not supported 错误还原:...
错误1:启动docker镜像时报错:Error response from daemon:...
错误1:private field ‘xxx‘ is never assigned 按Alt...
报错如下,通过源不能下载,最后警告pip需升级版本 Requirem...