【问题标题】:Lucene/Solr - how to return both relevant documents and authors based on query presence in documents?Lucene/Solr - 如何根据文档中的查询存在返回相关文档和作者?
【发布时间】:2012-06-19 14:17:40
【问题描述】:

我们已成功实施 Apache Solr,以在我们的对话系统中返回 x 个最相关的对话作为搜索结果。

每个对话 (node.nid) 由 cmets (comment.cid) 组成,每个对话/评论由用户 (node.uid / comment.uid) 创作。

目前,Solr 配置为搜索所有对话内容(cmets、用户、时间戳等)。我们希望扩展我们的搜索结果,不仅显示与查询最相关的对话框,还返回最相关的作者。

问题在于,为了确定作者与查询的相关性,我们需要 Solr 来区分节点和 cmets,以及 node.uid 和 comment.uid。

是否可以使用 Solr 返回不同类型的搜索结果:对话框和作者,例如首先显示与搜索查询相关的前 5 个作者,然后显示与同一查询相关的前 50 个相关查询。

【问题讨论】:

    标签: solr search-engine


    【解决方案1】:

    是的,可以使用 Solr 返回不同类型的搜索结果。 Solr 有一个开放的模式,这意味着你可以在 Solr 中索引任何你想要的东西, 只要每个文档都有唯一的 id。因此,您可以在同一个 Solr 索引中索引作者和对话。它们可能应该有不同的字段(例如作者姓名和作者的对话文本,只是对话的对话文本)。

    我相信DisMax query mode 可能会帮助您对作者和对话进行不同的评分。

    【讨论】:

    • 感谢您的回复,我目前正在尝试并尝试查询更新后的索引并显示结果。
    • 顺便说一句——对于为不同的对象类型(在本例中为文档和作者/用户)运行 2 个 Solr 实例是否有任何真正的反对意见?当然,除了或多或少的双重使用容量。我问的原因是对话搜索非常成熟,但是作者/用户搜索还有很多需要调整/调整的地方,调整索引等需要重新索引,从而干扰对话搜索。
    • 好吧,我建议您在同一个 Solr 实例中使用不同的内核:wiki.apache.org/solr/CoreAdmin。我在多语言搜索中使用了不同语言的 Solr 核心。它们让您拥有单独的索引,而无需付出双倍资源消耗的代价。
    • 谢谢!我今天会试一试。
    • 多核就是答案。我现在正在运行两个 solr 核心,一个 solr 实例,两个核心索引都由不同的模式填充。下一步是根据 1 个查询从两个核心正确返回搜索结果(可能是重复的,然后馈送到两个核心)。
    猜你喜欢
    • 2020-12-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-12-04
    • 1970-01-01
    • 1970-01-01
    • 2016-08-10
    相关资源
    最近更新 更多