Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/search/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 基于Lucene的小型文档高效定位查询_Java_Search_Solr_Lucene_Indexing - Fatal编程技术网

Java 基于Lucene的小型文档高效定位查询

Java 基于Lucene的小型文档高效定位查询,java,search,solr,lucene,indexing,Java,Search,Solr,Lucene,Indexing,我有一个由数十亿个小文档(约200个字符/文档)组成的大型数据集。 执行位置查询并仅获取三个最佳文档的最有效方法是什么 我的想法不是创建位置索引并在整个数据集上执行这样的查询,而是使用简单布尔查询的结果动态构建位置索引,然后执行位置查询以获得所需的最佳三个文档 因此,不是: 亿张单据->建立一个正向索引->执行位置查询->获取最佳三张单据 我想做以下工作: 十亿个文档->构建普通索引->执行布尔查询->获取最佳250个(高数值)->在ram中构建结果位置索引->执行位置查询->获取最佳三个文档

我有一个由数十亿个小文档(约200个字符/文档)组成的大型数据集。 执行位置查询并仅获取三个最佳文档的最有效方法是什么

我的想法不是创建位置索引并在整个数据集上执行这样的查询,而是使用简单布尔查询的结果动态构建位置索引,然后执行位置查询以获得所需的最佳三个文档

因此,不是: 亿张单据->建立一个正向索引->执行位置查询->获取最佳三张单据

我想做以下工作: 十亿个文档->构建普通索引->执行布尔查询->获取最佳250个(高数值)->在ram中构建结果位置索引->执行位置查询->获取最佳三个文档

我认为通过这样做,我将通过支付一个小的近似值来减少搜索时间。
还有其他/更好的解决方案吗?

我会尝试使用搜索过滤器。也许a是足够的,但相当肯定的是a。如果有利于缓存过滤器的结果,则可以使用包装

当传递到您的呼叫时,这将限制查询搜索筛选器接受的文档


因为您已经包含了标记,所以过滤后的查询也可以在solr中使用,使用与femtoRgon商定的。

。如果相同的术语出现在位置查询中,您还可以考虑缓存位置查询的(子)结果

假设您使用SpanQuery对象,您可以自己引入一个CachingSpanQuery类,该类以某种方式存储生成的跨度。为了提高效率,您需要一种压缩的方式来存储位置信息