java - 与 lucene 相交的边界

标签 java lucene range r-tree

我正在使用 Lucene,并且正在尝试找到一种方法来索引和检索具有范围属性的文档。

例如我有:

Document 1: Price:[30 TO 50]
Document 2: Price:[45 TO 60]
Document 3: Price:[60 TO 70]

并且我想搜索其范围与特定间隔相交的所有文档,在上面的示例中,如果我搜索Price in [55 TO 65],我应该得到Document 2Document 3作为结果。

我认为 NumericRangeQueries 本身并不能解决问题,我需要使用类似于 R 树的东西来处理索引,但是它们是在 Lucene 中实现的吗?另外,我认为我需要的应该是 MultiTermQuery 的子类,因为查询 Price in [55 TO 65] 有两个边界,但我在 MultiTermQuery 的子类中没有看到任何合适的内容。

感谢任何帮助, 谢谢,

西尔维奥

附注我使用的是 Lucene 2.9.0,但如果需要,我可以更新到最新版本。

最佳答案

可以尝试的一个简单选择是,在索引期间,只需将范围扩展到范围中的每个离散值。所以[30 TO 50]会被索引为30、31、32、33、34等。然后使用正常范围查询来查询范围。只要没有大量的离散值(数百万),这可能表现得足够好。

关于java - 与 lucene 相交的边界,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2507456/

相关文章:

java - Java 中的递归和堆栈

elasticsearch - 是否可以在 Elasticsearch 中使用 doc_values=true 过滤非索引字段

elasticsearch - 有没有一种方法可以在弹性查询中表示 “omit length of the field”?

c - 实现范围数据类型

c++ - 是否有一个标准算法来迭代一个范围?

java - 用于获取 "in memory"地理位置的 "around me"数据结构

java - 是否可以使用Java反射或各种技术来检查一个类是否有父类?

Java图形随机文本

java - 为什么我的 RadioGroup 返回 'false'

java - 有没有办法将 redquerybuilder 与 Lucene 一起使用?