我正在使用Lucene开发Web应用程序的搜索组件。我想将用户查询保存到索引并使用它们向用户建议备用查询,并保留查询统计信息(最常用的查询,最高评分查询......)。
要将此数据用于备用查询建议,我会分析查询以查看哪些术语最常用于彼此,并使用该术语向用户创建建议。
但我无法弄清楚以哪种形式索引数据。我只想将查询添加到索引中,但这样可能会有很多冗余数据,因为索引中的许多文档都具有相同的内容。有没有人对如何实现这一点有任何想法?
感谢您的帮助。
答案 0 :(得分:1)
“我只是想将查询添加到索引中,但是这样可能会有很多冗余数据,因为索引中的许多文档都会有相同的内容”
你可以tell Lucene不要存储文档内容,这意味着主要开销将是唯一的条款和索引本身。因此,将每个查询存储为唯一的文档可能不是一个很大的开销......这样你就不会丢弃任何信息。
答案 1 :(得分:1)
首先,我认为您应该将查询与现有索引分开存储。问题不是冗余数据,而是“降低”您的索引 - 将查询存储在同一索引中可能会损害您的搜索的相关性。一些选项是:
其次,Auto-Suggest From Popular Queries Using EdgeNGrams建议使用Solr的查询建议的替代实现。