在Apache lucene中搜索Key / Value对的速度

时间:2016-12-30 15:04:31

标签: java solr lucene

我是Apache Lucene的新手。存储键/值对的最佳方法是什么,以便您可以获得更好的搜索速度?

我有两个选择:

doc.add(new Field("name", "Cake", TextField.TYPE_STORED));
doc.add(new Field("value", "Praline Cheesecake", TextField.TYPE_STORED));
然后

执行像这样的搜索

name:"Cake" AND value:"Praline Cheesecake"

doc.add(new Field("Cake", "Praline Cheesecake", TextField.TYPE_STORED));

并执行此类搜索

Cake:"Praline Cheesecake"

我认为第二种选择的搜索速度更快。我对吗?你有其他选择吗?

1 个答案:

答案 0 :(得分:1)

Here是列出Solr Performance因素的好页面。

我想建议如下:

  1. 如果可以避免在索引中存储字段,则会大大提高性能。
  2. 你不必说"输入:cake"然后说" name:cake_name"。您只需按" cake:cake_name"进行搜索。如果某个特定文件没有" cake"字段,它不会显示在结果中。
  3. 在TextField的SchemaDefinition中设置omitNorms = true。
  4. 总而言之,我会选择:

    doc.add(new Field("Cake", "Praline Cheesecake", TextField.INDEXED));
    

    由于您从Solr开始,documentation是一个很好的起点。