Performance 优化lucene搜索性能

Performance 优化lucene搜索性能,performance,lucene,Performance,Lucene,我有一个在lucene文档中将标题、新闻正文作为单独字段存储的应用程序 在搜索时,我需要创建一个查询,将标题置于正文之上。标题在搜索中更为重要,但它会减慢搜索速度。 一个优化技巧告诉我,我可以将这两个字段合并为一个字段,这绝对加快了搜索和索引速度,但我失去了在搜索标题时想要抓住的得分 有没有办法将这些好处结合起来?您也可以在索引时尝试提高。比如说, Document doc = new Document(); Field f = new Field(...) f.setBoost(10f); /

我有一个在lucene文档中将标题、新闻正文作为单独字段存储的应用程序 在搜索时,我需要创建一个查询,将标题置于正文之上。标题在搜索中更为重要,但它会减慢搜索速度。 一个优化技巧告诉我,我可以将这两个字段合并为一个字段,这绝对加快了搜索和索引速度,但我失去了在搜索标题时想要抓住的得分


有没有办法将这些好处结合起来?

您也可以在索引时尝试提高。比如说,

Document doc = new Document();
Field f = new Field(...)
f.setBoost(10f); // or choose a float value of choice
doc.Add(f);

但仍不清楚为什么在搜索时间增加的情况下搜索会出现性能问题。通常无明显损失(如有)

在同一字段中增加标题和索引的最简单方法是多次添加标题文本

或者您可以使用有效载荷并覆盖相似性。见:


我怀疑这两种解决方案中的任何一种都不会给您带来如此大的速度提升。

您能否提供您的基准测试,使用两个单独的字段显示不可接受的性能?您可能希望两个单独的字段不允许短语搜索重叠不同的字段,例如title:hello body:world将匹配搜索hello world,如果您有title+body的组合字段,即使没有包含短语的字段。如果您确实希望存储包含组合数据的字段,查看自定义计分器,它允许您使用您想要的任何算法和字段构建自己的计分路由。我把它作为一个练习,以获得一个真正的答案来实际编写示例代码;是的,它绝对加快了速度。在我的情况下,我不需要存储标题或正文,我只希望它们被索引,所以最好的方法是将它们结合起来,以加快索引和搜索