2017-08-13 45 views
0

我有兩個核心:如何在solr中使用join以從兩個核心中獲取結果?

核心1:的BookID,地點,標題,作者,pubdate的

核心2:的BookID,文本,Referenecs,大小,LASTUPDATED

http://localhost:8983/solr/core1/select?fl=Title,%20Venue,%20Authors,%20PubDate&q= {加盟%! 20from = PaperID%20to = FILENAME%20fromIndex =核2%20}大小:15870

上述查詢返回零組的結果爲:

<response> 
    <lst name="responseHeader"> 
     <int name="status">0</int> 
     <int name="QTime">0</int> 
     <lst name="params"> 
     <str name="q">{!join from=PaperID to=fileName fromIndex=PapersIndex }size:15870</str> 
     <str name="fl">Title, Venue</str> 
     </lst> 
    </lst> 
    <result name="response" numFound="0" start="0" /> 
</response> 

我不知道solr連接如何工作。它爲什麼會產生零結果?

回答

1

Solr中的連接無法返回雙方的結果。將聯接想象爲「通過從不同核心進行匹配來過濾結果」(即常規SQL中的INNER JOIN)。

之所以你的例子給出了零的結果,可能是因爲你所參加的ID針對其他核心的SIZE一個核心的。你想加入ID與ID(即兩個核心中的公共ID)。

但是,您仍然只能從單個內核/集合中返回數據。

解決此問題的方法通常是將所有內容都編入同一個核心,儘管支持使用流式表達式(每個結果都會返回並從兩個光標連接起來)與來自兩端的數據進行連接,但是我沒有建議將您的查詢和索引設計從頭開始。

+0

@ MatsLindh感謝指導...其實在上面的查詢我反對ID比較ID。規模是第二個核心的條件和領域。我需要根據第二個核心的條件得出第一個核心的結果,它返回第一個核心的一些屬性,其中大小爲15870.其中size是第二個核心的領域。 –

0

解決了...很簡單嘗試了以下查詢:

http://localhost:8983/solr/core/select?q=*:*&%20fl=%20Title,Year&fq={!join%20from=BookID%20fromIndex=core2%20to=BookID}Year:2000 

您可以從第一核按照基於第二個核心的一些標準得到各個領域。

就像我需要field1, field2,..fieldn從核心-1其中core2.field="something"

相關問題