我找到了一种在 Solr 中搜索关系数据的简单方法,但我不确定是否应该进一步优化它。
让我举个例子:假设我们有一个系统,用户可以在其中组织个人收藏中的书籍。一本书有一个流派,例如“戏剧”、“惊悚”、“恐怖”等。用户收藏可能并且在大多数情况下确实包含来自不同流派的书籍。
如果我想创建一个搜索,用户可以在其中按流派搜索集合,我想返回包含与流派查询最相关的书籍的结果。我所做的是一个简单的技巧 - 我为该集合添加了一个名为“流派”的搜索字段,它是该集合中所有书籍流派的串联字符串。此字符串字段是在索引时创建的。这很有意义,因为如果一个集合包含 30 部“Thriller”和 20 部“Comedy”书籍,那么在搜索“Thriller”时,它会显示为比搜索“Comedy”更相关的结果。
但是,您可以猜到,“流派”字段最终会出现很多重复的术语。由于它只是在幕后使用,而不是在任何地方显示,这与其说是数据完整性,不如说是优化问题恕我直言。
我对 Solr 尤其陌生。我知道它是如何工作的,并且我假设在构建倒排索引时,每个术语都与一个简单的频率计数相关联。从技术上讲,如果“流派”字段包含 100 个词或 10000 个词,其中 9500 个是“Thriller”,那么索引和查询速度应该仍然没有多大关系,对吧?
如果我错了,那么是否存在语法,即使在输入文本中也可以给出提升?比如说,如果不是 10000 个术语,“流派”字段看起来像:
“惊悚^8500喜剧^125剧情^12”