如何使用 Solr 进行部分搜索?
How to do partial search with 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>
我在 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>