我对 Solr 比较陌生,所以如果我遗漏了一些明显的东西,请原谅我。我有一个允许用户搜索音乐艺术家的应用程序。索引来自具有正确拼写的只读数据库,因此在索引方面我已经弄清楚了。
然而,在查询方面,我需要预测各种拼写错误/差异,并希望帮助 solr 找到这些实例。从我们旧的本土搜索解决方案中,我有一个正则表达式列表和他们申请的艺术家。当我尝试使用 PatternReplaceCharFilterFactory 将这些转换为 solr 时,我注意到有些工作完美,而另一些则根本不工作......它们之间似乎没有韵律或理由。
例如:
<charFilter class="solr.PatternReplaceCharFilterFactory" pattern="em[ei]n[ei]m" replacement="Eminem"/>
准确地捕捉了 Eminem 的常见拼写错误。但对于 311 乐队:
<charFilter class="solr.PatternReplaceCharFilterFactory" pattern="[Tt]hree [Ee]leven" replacement="311"/>
不工作。另一个例子是九英寸钉子:
<charFilter class="solr.PatternReplaceCharFilterFactory" pattern="((nine|9).*inch.*nails\b)|(n\.? ?i\.? ?n\.?\b)" replacement="Nine Inch Nails"/>
非常适合查找乐队名称的最常见模式。但是对于夏娃 6:
<charFilter class="solr.PatternReplaceCharFilterFactory" pattern="[Ee]ve.{0,4}([Ss]ix|6)" replacement="Eve 6"/>
在使用此过滤器时,我是否缺少一些基本的东西?我已经尝试了我上面提到的正则表达式的许多变体(甚至使用像“三十一”这样的文字),但仍然没有成功。我已经尝试使有问题的过滤器成为分析器中唯一的 PatternReplaceCharFilterFactory 。我也确定这些项目在索引中是正确的,因为当我搜索正确的拼写时,它会返回正确的结果。
有什么建议么?
斯诺达尔