繁体   English   中英

如何一次计算多个solr内核上的查询结果

[英]How to count the query result on multiple solr cores at once

使用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>

您需要使用Solr的Faceted搜索机制。 该链接将指导您进行多方面的搜索。

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

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

对于分布式搜索,请添加

/ select?collection = hotel详细信息,活动,餐厅

对于刻面

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM