簡體   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