Optimization 我是否应该担心优化一个包含大量重复项的大型Solr字段?

Optimization 我是否应该担心优化一个包含大量重复项的大型Solr字段?,optimization,solr,lucene,tf-idf,Optimization,Solr,Lucene,Tf Idf,我找到了一种在Solr中搜索关系数据的简单方法,但我不确定是否应该进一步优化它 让我给你们举个例子:比如说,我们有一个系统,用户在其中组织个人收藏的书籍。一本书有一种类型,例如“戏剧”、“惊悚”、“恐怖”等。用户收藏可能,而且在大多数情况下,它确实包含不同类型的书 如果我想创建一个搜索,用户可以按流派搜索收藏,我想返回包含与流派查询最相关书籍的结果。我所做的只是一个简单的把戏——我为收藏添加了一个名为“流派”的搜索字段,它是该收藏中所有书籍流派的串联字符串。此字符串字段在索引时创建。这很有意义,

我找到了一种在Solr中搜索关系数据的简单方法,但我不确定是否应该进一步优化它

让我给你们举个例子:比如说,我们有一个系统,用户在其中组织个人收藏的书籍。一本书有一种类型,例如“戏剧”、“惊悚”、“恐怖”等。用户收藏可能,而且在大多数情况下,它确实包含不同类型的书

如果我想创建一个搜索,用户可以按流派搜索收藏,我想返回包含与流派查询最相关书籍的结果。我所做的只是一个简单的把戏——我为收藏添加了一个名为“流派”的搜索字段,它是该收藏中所有书籍流派的串联字符串。此字符串字段在索引时创建。这很有意义,因为如果一个收藏包含30本“惊悚”和20本“喜剧”书籍,那么在搜索“惊悚”时,它将显示为比搜索“喜剧”更相关的结果

但是,正如您所猜测的,“流派”字段最终会有许多重复的术语。因为它只在幕后使用,并且不在任何地方显示,所以这与其说是一个数据完整性问题,不如说是一个优化问题

我对索尔特别陌生。我知道它是如何工作的,我假设在构建反向索引时,每个术语都与一个简单的频率计数相关联。从技术上讲,如果“类型”字段由100个术语或10000个术语组成,其中9500个术语是“Thriller”,那么索引和查询速度应该不会有多大影响,对吗

如果我错了,那么是否存在一种语法,即使在输入文本中也可以给出提升?比如说,如果不是10000个术语,“流派”字段看起来像:


“Thriller^8500喜剧^125戏剧^12”

您应该使用Solr的有效负载功能,它允许在文本中增加单词。 比如支票


关于你的方法:如果
stored、termPositions、termOffset
字段属性设置为false,一切都会好起来。

stored=false应该保持索引大小较小,对吗?既然我们不需要显示这个字段,我们也不需要保存它,这就是逻辑吗?是的,我们只需要保存一个术语向量。是的,有效载荷方法看起来很有趣,但它不会有那么多优势,对吗?也就是说,一旦我去掉了存储的=true。然后,术语向量将只保留术语计数器作为引用Yes,但是将10000个术语字符串传递给Solr看起来并不漂亮。但确实有效。