我有一个查询,我正在尝试处理,我搜索它但找不到任何答案,我做错了什么,我想搜索的是,%asd%,但我得到asd%结果而不是它,
我的字段类型是这个,
<fieldType name="text_general_edge_ngram" class="solr.TextField" positionIncrementGap="100">
<analyzer type="index">
<tokenizer class="solr.LowerCaseTokenizerFactory"/>
<filter class="solr.EdgeNGramFilterFactory" minGramSize="2" maxGramSize="15" side="front"/>
</analyzer>
<analyzer type="query">
<tokenizer class="solr.LowerCaseTokenizerFactory"/>
</analyzer>
</fieldType>
我的查询是,名称:asd,是我的查询还是字段类型?谢谢你:))
答案 0 :(得分:2)
如果您想进行%asd%
之类的搜索,则不需要ngram过滤器...基本上,solr使用~
表示单个字符,*
表示搜索中的多个字符。
e.g
name:asd~
将与asda asdb asdc
匹配,依此类推,而name:asd*
将与asdasadad asdfgkhjfgkl
匹配,依此类推,因此您可以使用name: ~asd~
来匹配basdf
或{{对于easdk
或name:*asd*
aldkaasdsdfsd
据我所知,你不需要ngram用于这种搜索