例子:美丽
基于搜索:auti ...
我想只有一个字,而不是整个词的一部分进行搜索。
例如,当我搜索auti
只有中间3个字母,而不是整个word.I我不是得到结果:就目前我使用的使用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>
您可以使用通配符查询。
在你上面的例子,你应该预先考虑并与星号追加搜索字词,所以如果有人搜索auti,查询您发送到服务器将auti
这应该把所有的结果与包含在其中的字auti所有单词。
http://www.solrtutorial.com/solr-query-syntax.html
现在,因为你要搜索词中的子串,你可以添加侧=“回”自己的定义,这应该帮助你实现你的目标。
所以,你的字段类型定义如下所示:
<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>