【问题标题】:Term vectors in SolrSolr 中的术语向量
【发布时间】:2017-10-04 07:42:36
【问题描述】:

我正在尝试使用 MoreLikeThis Solr 的功能来查找基于其他文档的类似文档,但我不太明白其中一些功能是如何工作的。

正如here 所说,当存储termVectors 时,MoreLikeThis 组件效果最佳。我的困惑来了。

我在 Solr 的 schema.xml 文件中的一个字段(假设该字段包含电影评论文本)上启用标志 termVectors 就足够了吗?它会在插入给定字段后让 Solr 计算给定字段的 termVectors,将其存储,然后在后续调用 MoreLikeThis 处理程序时使用计算出的 termVectors?

【问题讨论】:

    标签: solr lucene morelikethis


    【解决方案1】:

    简短的回答是否定的,您需要在这样的架构更改后重新索引。 启用术语向量,将加快从原始输入文档中查找感兴趣术语的过程(如果该文档在索引中)。 第二阶段计时(当更多类似此查询发生时)将保持不变。 有关 MLT 工作原理的更多信息 [1]。

    一般来说,当对架构应用此类更改时,您需要重新索引您的文档以使 Solr 构建相关的数据结构(术语向量是每个文档的迷你索引,并且需要将特定文件存储在磁盘上[2] 注:这将增加您的磁盘利用率)

    [1]https://www.slideshare.net/AlessandroBenedetti/advanced-document-similarity-with-apache-lucene

    [2]https://lucene.apache.org/core/6_6_0/core/org/apache/lucene/codecs/lucene50/Lucene50TermVectorsFormat.html

    【讨论】:

    • 我实际上还没有架构,也没有索引的文档集。我的 Solr 核心现在是空白的,我才刚刚开始。所以,如果我理解得很好 - Solr 会在索引每个文档时自动为每个文档构建术语向量,对吧?
    • 确实,在架构中配置后,Solr 会在索引时负责并构建数据结构。 MLT 将自动使用这些结构(MLT 代码在内部对索引文件进行检查,如果找到正在评估的字段的术语向量,它将自动使用它们)
    • 太好了,这是个好消息。我实际上还有一个问题,因为我看到您对该主题有很好的理解。在执行 MLT 时,我希望它只考虑索引文档的有限子集,例如:我有 150 000 个文档的索引,架构由 id、标题、内容和发布日期组成。现在,我想对任意输入文档执行 MLT 查询,但我希望查询仅考虑发布日期在 02-01-2014 和 02-04-2014 之间的文档。似乎mlt.qf 是它的解决方案,对吗?
    • 这是我找到的文档的链接lucene.apache.org/solr/guide/6_6/…
    • 好的,为此我建议使用 MLT 查询解析器。为此,您需要遵循以下语法:lucene.apache.org/solr/guide/6_6/… 然后您可以添加到查询参数 fq,例如您提到的那个。这基本上可以让您控制更多这样构建的查询,添加您喜欢的部分(例如附加过滤器)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-03-18
    • 1970-01-01
    • 1970-01-01
    • 2012-02-02
    • 1970-01-01
    • 2018-11-17
    • 1970-01-01
    相关资源
    最近更新 更多