我在SQL Server数据库中存储了120000条酒记录。到目前为止,我已经通过执行以下SQL成功搜索了葡萄酒名称:
WHERE (LOWER(Wine.name) LIKE '%" + (searchString) + "%'")
我现在正在切换到使用Solr。我想搜索“ clos rene”并找回“ ClosRéné”。但是,Solr将返回所有与“ Clos”匹配的记录以及所有与“Réné”匹配的记录。我已经尝试过以下字段定义:
<fieldType name="c_text" class="solr.TextField" positionIncrementGap="100">
<analyzer type="index">
<tokenizer class="solr.KeywordTokenizerFactory"/>
<filter class="solr.LowerCaseFilterFactory"/>
</analyzer>
<analyzer type="query">
<tokenizer class="solr.KeywordTokenizerFactory"/>
<filter class="solr.LowerCaseFilterFactory"/>
</analyzer>
</fieldType>
有人可以帮我定义正确的字段类型,以便我可以重现上面的SQL查询,以返回空格之间不区分大小写的不区分大小写和重音的结果吗?
我还尝试过使用文件类型'string'进行通配符搜索,但是我无法使其不区分大小写地工作。
尝试,
<fieldType name="c_text" class="solr.TextField" positionIncrementGap="100">
<analyzer type="index">
<tokenizer class="solr.KeywordTokenizerFactory"/>
<filter class="solr.LowerCaseFilterFactory"/>
<filter class="solr.ASCIIFoldingFilterFactory"/>
<filter class="solr.EdgeNGramFilterFactory" minGramSize="3" maxGramSize="50" side="front"/>
</analyzer>
<analyzer type="query">
<tokenizer class="solr.KeywordTokenizerFactory"/>
<filter class="solr.LowerCaseFilterFactory"/>
<filter class="solr.ASCIIFoldingFilterFactory"/>
</analyzer>
</fieldType>
编辑:好的,现在我收到您的问题,补充说明:<filter class="solr.EdgeNGramFilterFactory" minGramSize="3" maxGramSize="50" side="front"/>
尝试一下。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句