如何在Solr中进行部分开始比赛?

Cru*_*aft 5 solr

我正试图在一个大的姓氏列表中搜索部分开始的匹配.所以Wein*应该找到Weinberg,Weinkamm等.

我可以通过创建一个特殊字段并添加来完成此操作

<filter class="solr.EdgeNGramFilterFactory" minGramSize="1" maxGramSize="50" preserveOriginal="1"/>

到schema.xml中的类型规范.当我将上面的行仅添加到索引分析器并将其留空以供查询分析器使用时,我可以通过搜索special_field进行搜索:Wein并获得预期结果.

现在我看到solr也有一个*-syntax.EdgeNGramFilterFactory和*-syntax之间的联系是什么?

我是在正确地做事还是有更好,更规律的方式?

谢谢!

Cru*_*aft 1

注意:我还在 Lucene 论坛中提出了这个问题,在那里我得到了一个很好的答案: http ://lucene.472066.n3.nabble.com/How-to-do-partial-beginning-matches-td781147.html