我正在尝试使用Solr进行模糊匹配。
在我的文件索引first_name字段中我提到“MYNEWORGANIZATION20SEP2011” - 实际上这个词是“我的新组织2011年9月20日”,但我删除了空格和其他字符。
现在上面的单词(没有空格)如果我直接搜索查询“MYNEWORGANIZATION20SEP2011”Solr得到1个结果,如上面的文档ID,完美!
但是如果我从这个字符串修剪两个字符并且在查询中如果我提供“MYNEWORGANIZATION20SEP20~0.8”,我得到0结果。
我的新查询MYNEWORGANIZATION20SEP20与主要文件数据的距离是2 - 因此%匹配应该是> 90%匹配,因此它仍应搜索数据(在我的查询中,我指定的只有80%匹配。
顺便说一句,如果我使用first_name作为6-7个字符,如“rushik”并提供模糊查询,如“rushik~0.75”,搜索工作正常并返回数据。
在上述两种情况下,我使用字段类型为“text_general” - 使用solr 3.3。
我们在Solr中对模糊搜索有任何字符限制,还是可以在任何地方配置? - 我正在使用默认的solr配置,而没有在solrconfig.xml中更改任何内容
有没有更好的方法来搜索“我的新组织2011年9月20日”,比如带有模糊查询的字符串,而无需手动删除空格。
谢谢, Rushik。
答案 0 :(得分:2)
您所在领域的指数时间分析是什么?
文本常规字段通常通过空格标记器,停用词过滤器,字分隔符和小写过滤器,在这种情况下,索引字段完全不同。
是来自My New Organization的转换2011年9月20日 - > MYNEWORGANIZATION20SEP2011由你完成索引之前?
此外,最重要的模糊搜索不会进行查询时间分析。
您可能希望将字段类型用作字符串或小写字母字段类型,例如
<fieldType name="lowercase" class="solr.TextField" positionIncrementGap="100">
<analyzer>
<tokenizer class="solr.KeywordTokenizerFactory"/>
<filter class="solr.LowerCaseFilterFactory" />
</analyzer>
</fieldType>
并使用小写测试Query。