我一直在研究 Subtext 的 Lucene.Net 实现作为对我们的网站进行类似操作的指南。当 Subtext 索引或搜索给定的帖子时,它通过 NumericUtils.IntToPrefixCoded 运行 ID。根据 Lucene 文档,它会发生一些变化,但不会失去精度。那么,有什么意义呢?它有什么作用,为什么?
问问题
447 次
1 回答
1
您需要查看类文档,其中更详细地解释了它:
为了在 Apache Lucene 中快速执行范围查询,将范围递归地划分为多个区间进行搜索:范围的中心仅在 trie 中以尽可能低的精度进行搜索,而边界匹配得更精确。这大大减少了术语的数量。
此类生成术语以实现此目的:首先需要将数字整数值转换为字符串。对于该整数值(32 位或 64 位),它们是无符号的,并且这些位被转换为每 7 位的 ASCII 字符。结果字符串可以像原始整数值一样排序。每个值也以
shift
编码期间使用的值(删除的位数)作为前缀(在第一个字符中)。
据我了解,intToPrefixCoded
方法正是这样做的:获取int
值,对其进行移位并返回一个可排序的值,String
如上所述。
于 2012-11-16T10:49:39.330 回答