实例:美丽
基于搜索:auti ...
我想只搜索一个单词的一部分,而不是整个单词
例如,当我只搜索auti
中间的3个字母时,而不是整个单词。我没有得到结果:目前我正在使用带有apache solr(也许是视图)的搜索api。
有什么建议吗?
我正在使用这个
<fieldType name="string_ci" class="solr.TextField" sortMissingLast="true" omitNorms="true">
<analyzer>
<tokenizer class="solr.StandardTokenizerFactory"/>
<filter class="solr.StandardFilterFactory"/>
<filter class="solr.LowerCaseFilterFactory"/>
<filter class="solr.EdgeNGramFilterFactory" minGramSize="1" maxGramSize="10"/>
</analyzer>
</fieldType>
答案 0 :(得分:4)
您可以使用通配符查询。
在上面的示例中,您应该使用星号前缀和附加搜索字词,因此如果有人搜索auti,您发送给服务器的查询将是 auti
这应该包含所有包含单词auti的单词的结果。
答案 1 :(得分:1)
既然你想在单词中搜索子字符串,你可以在你的定义中添加side =“back”,这可以帮助你实现目标。
因此,您的字段类型定义如下所示:
<fieldType name="string_ci" class="solr.TextField" sortMissingLast="true" omitNorms="true">
<analyzer>
<tokenizer class="solr.StandardTokenizerFactory"/>
<filter class="solr.StandardFilterFactory"/>
<filter class="solr.LowerCaseFilterFactory"/>
<filter class="solr.EdgeNGramFilterFactory" minGramSize="1" maxGramSize="10" side="front" />
<filter class="solr.EdgeNGramFilterFactory" minGramSize="1" maxGramSize="10" side="back" />
</analyzer>
</fieldType>