【问题标题】:How to count the query result on multiple solr cores at once如何一次计算多个 solr core 上的查询结果
【发布时间】:2014-01-14 21:03:06
【问题描述】:

使用 solr 的多核功能,我们在一个 solr 实例中实现了多个核心,每个核心都有一些特定的信息,比如一个核心存储了酒店和城市的详细信息,而另一个存储了城市上发生的事件的详细信息,第三个核心存储了详细信息关于城里的餐馆。还有其他参数,以便我们创建单独的核心。

我的应用程序是按关键字搜索的,我想将列表显示为:

  • 酒店(numFound)
  • 事件(numFound)
  • 餐厅(numFound)

然后用户可以深入研究他感兴趣的东西。

我们如何通过查询所有核心并获得每个核心的记录数(numFound)来实现这一点。

Solr.xml:

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<solr sharedLib="lib" persistent="true">
    <cores adminPath="/admin/cores" hostPort="${jetty.port:8983}" hostContext="${hostContext:solr}">
        <core default="true" instanceDir="hotelDetails" name="hotelDetails"/>
        <core default="false" instanceDir="Events" name="Events"/>
        <core default="false" instanceDir="Restaurants" name="Restaurants"/>
    </cores>
</solr>

【问题讨论】:

    标签: search solr


    【解决方案1】:

    您需要使用 Solr 的 Faceted 搜索机制。 This link 将引导您进行分面搜索。

    可能有很多方法可以实现您的需求。这是我的解决方案

    1. 首先创建一个名为“type”的自定义字段。根据每个核心更新,每个文档中的相关值(例如 For hotelDetails 类型:酒店)。
    2. 使用分面进行distributed search。在您的搜索查询中添加以下命令,您将获得预期的结果。

    对于分布式搜索添加

    /select?collection=hotelDetails,Events,Restaurants

    用于刻面

    facet=true&facet.field=type

    检查以下查询。我希望这两个查询都能正常工作。

    http://'localhost':8983/solr/hotelDetails/select?shards=localhost:8983/solr/hotelDetails,localhost:8983/solr/Events,localhost:8983/solr/Restaurants&q=some_query

    http://'localhost':8983/solr/hotelDetails/select?collection=hotelDetails,Events,Restaurants&q=some_query

    【讨论】:

    • 感谢哥们的宝贵意见,如果能详细点就太好了
    • 我配置了 3 个核心,每个用于 1 个类别(hotelDetails、Events、Restaurants)。如果我查询localhost:8983/solr/…,它只返回 404 错误(不附加我们可以查询的核心名称?)。请让我知道,我错过了什么.. 感谢您的努力
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-12-22
    • 2022-01-24
    • 1970-01-01
    • 2022-09-30
    • 1970-01-01
    • 2021-03-01
    相关资源
    最近更新 更多