我在 solr 中有一个列 - 类型字符串,其值类似于“JOHN JACKON”、“JAKE SMITH”、“JOHNATAN JAMESON”
是否有可能告诉 solr 当我输入 J 时首先获得这些 J 次比另一个多的记录。
我在 solr 中有一个列 - 类型字符串,其值类似于“JOHN JACKON”、“JAKE SMITH”、“JOHNATAN JAMESON”
是否有可能告诉 solr 当我输入 J 时首先获得这些 J 次比另一个多的记录。
您可以使用 solr.EdgeNGramFilterFactory。您可以将 minGramSize 设置为 1。
此 FilterFactory 在查询期间匹配索引中特定术语的前缀子字符串(或后缀子字符串,如果 side="back")非常有用。
参考:http ://wiki.apache.org/solr/AnalyzersTokenizersTokenFilters#solr.EdgeNGramFilterFactory
所以对于你上面的例子,
对于 JOHN JACKSON,它将存储:
J,乔,约翰,约翰,J,JA,江淮,杰克,杰克,杰克逊
对于杰克史密斯:
j, JA, JAK, 杰克, S, SM, SMI, SMIT, 史密斯
现在当有人搜索 J 时,第一个文档(john jackson)将获得更高的分数,因为 J 在索引中是两倍。