Java 基于Lucene的小型文档高效定位查询
我有一个由数十亿个小文档(约200个字符/文档)组成的大型数据集。 执行位置查询并仅获取三个最佳文档的最有效方法是什么 我的想法不是创建位置索引并在整个数据集上执行这样的查询,而是使用简单布尔查询的结果动态构建位置索引,然后执行位置查询以获得所需的最佳三个文档 因此,不是: 亿张单据->建立一个正向索引->执行位置查询->获取最佳三张单据 我想做以下工作: 十亿个文档->构建普通索引->执行布尔查询->获取最佳250个(高数值)->在ram中构建结果位置索引->执行位置查询->获取最佳三个文档 我认为通过这样做,我将通过支付一个小的近似值来减少搜索时间。Java 基于Lucene的小型文档高效定位查询,java,search,solr,lucene,indexing,Java,Search,Solr,Lucene,Indexing,我有一个由数十亿个小文档(约200个字符/文档)组成的大型数据集。 执行位置查询并仅获取三个最佳文档的最有效方法是什么 我的想法不是创建位置索引并在整个数据集上执行这样的查询,而是使用简单布尔查询的结果动态构建位置索引,然后执行位置查询以获得所需的最佳三个文档 因此,不是: 亿张单据->建立一个正向索引->执行位置查询->获取最佳三张单据 我想做以下工作: 十亿个文档->构建普通索引->执行布尔查询->获取最佳250个(高数值)->在ram中构建结果位置索引->执行位置查询->获取最佳三个文档
还有其他/更好的解决方案吗?我会尝试使用搜索过滤器。也许a是足够的,但相当肯定的是a。如果有利于缓存过滤器的结果,则可以使用包装 当传递到您的呼叫时,这将限制查询搜索筛选器接受的文档
因为您已经包含了标记,所以过滤后的查询也可以在solr中使用,使用与femtoRgon商定的。。如果相同的术语出现在位置查询中,您还可以考虑缓存位置查询的(子)结果 假设您使用SpanQuery对象,您可以自己引入一个CachingSpanQuery类,该类以某种方式存储生成的跨度。为了提高效率,您需要一种压缩的方式来存储位置信息