Lucene中多值字段的性能问题

时间:2015-04-20 10:18:10

标签: java performance indexing solr lucene

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

我们用于分面的文档字段之一定义如下:

<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 GB Xeon CPU E5-2670 v2,64 GB RAM
  • 操作系统:Windows Server 2012 Standard
  • JVM:以-Xmx8000m开头(Lucene正在使用其中约45%)
  • Lucene查询是单线程的

1 个答案:

答案 0 :(得分:1)

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

你需要&#34;索引&#34;你将其包括在搜索/分面中,否则Solr将毫无例外地跳过这个字段