我们正在使用Lucene 4.7构建和查询相当大的数据集(110多个百万文档)。

我们用于刻面的document字段之一定义如下:

<field name="topic_paths"
       type="string"
       indexed="false"
       stored="false"
       docValues="true"
       multiValued="true"
       termVectors="false"
       termPositions="false"
       termOffsets="false"/>


每当我们在查询中包含此字段时,它们就会变得非常缓慢:搜索中每个topic_path值大约需要7秒,因此四个topic_path值大约需要30秒(在我们的示例中为典型值)。

不使用该字段的查询非常快(15毫秒)。

我们应该期望Lucene具有用于多面值的多值字段的性能吗?我们的字段定义有什么错误或不理想吗?我们可以使用一些技巧来加快搜索速度吗?

细节:


硬件:Xen VM,2.5 GHz时的8核Xeon CPU E5-2670 v2、64 GB RAM
操作系统:Windows Server 2012 Standard
JVM:以-Xmx8000m开头(Lucene使用了其中的45%)
Lucene查询是单线程的

最佳答案

阅读这篇文章,http://wiki.apache.org/solr/SchemaXml#Fields

您需要为您的字段“索引”以将其包括在搜索/方面中,否则Solr将毫无例外地跳过此字段

关于java - Lucene中多值字段的性能问题,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/29745135/

10-11 22:22
查看更多