【发布时间】:2017-07-20 21:23:22
【问题描述】:
我没有注意到很多差异,但是当您在索引时使用 EdgeNGramFilterFactory 时,文档术语本身会被分解为子字符串,然后您的搜索字符串会在这些子字符串上匹配,同样在索引时查询您enter 被分解成子字符串,然后在普通文档字符串上匹配?
这是查看此过程的正确方法还是我有误解?
谢谢!
【问题讨论】:
我没有注意到很多差异,但是当您在索引时使用 EdgeNGramFilterFactory 时,文档术语本身会被分解为子字符串,然后您的搜索字符串会在这些子字符串上匹配,同样在索引时查询您enter 被分解成子字符串,然后在普通文档字符串上匹配?
这是查看此过程的正确方法还是我有误解?
谢谢!
【问题讨论】:
根据 Solr Wiki:-
https://wiki.apache.org/solr/AnalyzersTokenizersTokenFilters#solr.EdgeNGramFilterFactory
边缘 n-gram 分析可以在索引时或查询时(或两者)执行,但通常更有用,如本例所示,在索引时生成所有 n-gram克索引在同一位置。在查询时,查询词可以直接匹配,无需任何 n-gram 分析。
因此,如果您在索引时执行 n-gram 分析,生成的 n-gram 基本上会彼此接近,从而获得更好的性能。
我将其视为数组和链表。在数组中,元素之间的距离更近,因此遍历速度更快。
【讨论】: