2017-08-13 74 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"

相关问题