actualString:32498516141,+ 32498516141
convertedString = ParamNames.OPEN_PARENTHISIS + actualString + ParamNames.CLOSE_PARENTHISIS;
当我们使用+ 32498516,+ 3249、32498516,324等进行搜索时,包含搜索在solr中不起作用
答案 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>
请找到在索引和查询数据时显示令牌创建方式的图像。它还突出显示了匹配项。