【问题标题】:Solr: Search in multiple fields BUT STOP if documents match was foundSolr:在多个字段中搜索但如果找到文档匹配则停止
【发布时间】:2013-01-17 01:16:06
【问题描述】:

我想在 Solr 中搜索多个字段。 (知道复制字段的概念,我知道 (e)dismax 搜索处理程序。)

所以我有一个有序的字段列表,我希望搜索这些术语。 1.) SKU 2.) 名称 3.) 说明 4.) 总结 等等。

现在,当查询匹配一个字词时,假设在 SKU 字段中,我想要此匹配项,并且在后续字段中不再进行搜索。

仅当第一个字段(SKU 字段)中根本没有匹配项时,才应使用第二个字段(在本例中为“名称”),依此类推。

Solr 可以做到这一点吗? 我是否必须为此实现自己的 Lucene 搜索处理程序?

欢迎任何建议!

谢谢你, 伯恩哈德

【问题讨论】:

    标签: lucene solr


    【解决方案1】:

    我认为您的案例需要执行 4 次不同的搜索。如果您实现自己的 SearchHandler,则可以避免在 4 个不同请求中累积搜索结果的惩罚。这意味着,您将发送一个查询,而自定义 SearchHandler 将执行 4 次搜索并准备一个结果集。

    【讨论】:

    • 谢谢。我会尝试这种方法。如果我深入研究源代码并进行编码,就会出现一个新问题:我应该将其实现为 LuceneSearchHandler 还是在 Solr Java 类之上?有什么优点/缺点?谢谢!
    • 如果您已经在使用 Solr,那么在 Solr API 之上构建应该会更容易且侵入性更小。然后,您可以配置自定义搜索处理程序的其他设置以及 Solr 配置的其余部分。
    【解决方案2】:

    如果我的猜测是正确的,您希望根据字段的顺序对结果进行排名。如果是这样,那么您可以使用标准查询,例如

    q=sku:(query)^4 OR name:(query)^3 OR description:(query)^2 OR summary:(query)

    这将按字段的顺序排列结果。

    希望有帮助。

    【讨论】:

    • 我喜欢这个想法,但它不符合 OP 的所有要求。
    猜你喜欢
    • 2020-05-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-11-06
    • 2022-11-29
    • 1970-01-01
    • 2016-11-27
    • 2012-10-21
    相关资源
    最近更新 更多