使用lucene保持查询统计信息

时间:2010-11-25 14:13:31

标签: java lucene

我正在使用Lucene开发Web应用程序的搜索组件。我想将用户查询保存到索引并使用它们向用户建议备用查询,并保留查询统计信息(最常用的查询,最高评分查询......)。

要将此数据用于备用查询建议,我会分析查询以查看哪些术语最常用于彼此,并使用该术语向用户创建建议。

但我无法弄清楚以哪种形式索引数据。我只想将查询添加到索引中,但这样可能会有很多冗余数据,因为索引中的许多文档都具有相同的内容。有没有人对如何实现这一点有任何想法?

感谢您的帮助。

2 个答案:

答案 0 :(得分:1)

  

“我只是想将查询添加到索引中,但是这样可能会有很多冗余数据,因为索引中的许多文档都会有相同的内容”

你可以tell Lucene不要存储文档内容,这意味着主要开销将是唯一的条款和索引本身。因此,将每个查询存储为唯一的文档可能不是一个很大的开销......这样你就不会丢弃任何信息。

答案 1 :(得分:1)

首先,我认为您应该将查询与现有索引分开存储。问题不是冗余数据,而是“降低”您的索引 - 将查询存储在同一索引中可能会损害您的搜索的相关性。一些选项是:

  • 使用单独的Lucene索引。
  • 使用Solr,两个单独的cores,一个用于文档,另一个用于查询。
  • 使用查询日志。将分数存储在查询中。使用后处理构建查询统计信息。由于这是一个Web应用程序,您可以使用servlet容器,例如Tomcat的日志。

其次,Auto-Suggest From Popular Queries Using EdgeNGrams建议使用Solr的查询建议的替代实现。