Solr搜索如何与包含+ phone一起使用

时间:2019-05-21 04:38:45

标签: search solr contains

actualString:32498516141,+ 32498516141

convertedString = ParamNames.OPEN_PARENTHISIS + actualString + ParamNames.CLOSE_PARENTHISIS;

当我们使用+ 32498516,+ 3249、32498516,324等进行搜索时,包含搜索在solr中不起作用

1 个答案:

答案 0 :(得分:0)

如果要按单词的一部分进行搜索,则需要应用,例如N-Gram Tokenizer,<tokenizer class="solr.NGramTokenizerFactory" minGramSize="3" maxGramSize="10"/>

例如

在:"bicycle"

退出:"bicy", "bicyc", "icyc", "icycl", "cycl", "cycle", "ycle"

在这种情况下,您将可以按单词的一部分进行搜索。您需要为两个分析器都应用NGramTokenizerFactory:

<fieldType name="text_general" class="solr.TextField" positionIncrementGap="100" multiValued="false">
    <analyzer type="index">
      <tokenizer class="solr.NGramTokenizerFactory" minGramSize="3" maxGramSize="10"/>
      <filter class="solr.StopFilterFactory" words="stopwords.txt" ignoreCase="true"/>
      <filter class="solr.LowerCaseFilterFactory"/>
    </analyzer>
    <analyzer type="query">
      <tokenizer class="solr.NGramTokenizerFactory" minGramSize="3" maxGramSize="10"/>
      <filter class="solr.StopFilterFactory" words="stopwords.txt" ignoreCase="true"/>
      <filter class="solr.LowerCaseFilterFactory"/>
    </analyzer>
  </fieldType>

您也可以尝试以下查询分析器。这完全取决于您的要求。

<analyzer type="query">
  <tokenizer class="solr.KeywordTokenizerFactory"/>
</analyzer>

您可以在schema.xml中修改或添加字段类型,并将其应用于您的字段。 完成重启服务器后,重新索引数据。如果数据使用solr admin工具匹配,则可以为您的字段验证上述fieldType。

我使用了以下字段类型,并使用solr工具进行了分析。

这是字段类型:

    <fieldType name="custome_field_type" class="solr.TextField" positionIncrementGap="100" multiValued="false">
        <analyzer type="index">
          <tokenizer class="solr.NGramTokenizerFactory" minGramSize="3" maxGramSize="10"/>
          <filter class="solr.StopFilterFactory" words="stopwords.txt" ignoreCase="true"/>
          <filter class="solr.LowerCaseFilterFactory"/>
        </analyzer>
        <analyzer type="query">
          <tokenizer class="solr.KeywordTokenizerFactory"/>
        </analyzer>
   </fieldType>

请找到在索引和查询数据时显示令牌创建方式的图像。它还突出显示了匹配项。

Analysis image one with +32 query value

Analysis image one with 9851 query value