solr加入Must子句和q和fq

时间:2018-04-06 22:49:48

标签: solr lucene datastax

我有一个solr查询,可以在两个不同的核心上加入。 所以我要说我的第一个核心有以下3个文档

  

{" id":" 1"," m_id":" lebron"," some_info":& #34; 29" }

     

{" id":" 2"," m_id":" Wade"," matches_win":& #34; 29" }

     

{" id":" 3"," m_id":" lebron"," some_info":& #34; 1234" }

我的第二个核心有以下文档

  

{           " m_id":" lebron",           "团队":"迈阿密"           }

     

{           " m_id":" Wade",           "团队":"迈阿密"           }

所以现在我们用lebron对doc进行了更新,并将团队改为" clevelend"。因此,核心2中的新文档看起来像这样。

  

{           " m_id":" lebron",           "团队":" clevelend"           }

     

{           " m_id":" Wade",           "团队":"迈阿密"           }

现在我正在尝试加入这两个,并为团队迈阿密找到形式为core1的文档。

我的查询看起来像这样

  

fq = + {!从= m_id加入= m_id fromIndex = core2 force = true} team:miami

我希望它能返回id = 2的doc,但我得到的是文档1和2。

我无法弄清问题是什么。查询不正确吗? 或者在加入时是否有问题。

观察结果。

1.如果我从查询中删除+,它按预期工作。所以以下查询工作

  

fq = {!join from = m_id to = m_id fromIndex = core2 force = true} team:miami

我不确定Must子句如何影响查询。

2。此外,如果您查看原始查询未返回文档3.(但其返回的文档1具有相同的m_id)。现在,doc 1和doc3之间的唯一区别是doc1是在" lebron"团队成员:迈阿密。当团队更新到"克利夫兰"时创建了doc3。因此,对于core1中的新文档,加入工作正常,但对于旧文档则不行。

3.如果我使用q而不是fq,查询会按预期返回结果。

  

q = + {!from from = m_id to = m_id fromIndex = core2 force = true} team:miami

  

q = {!join from = m_id to = m_id fromIndex = core2 force = true} team:miami

以上两项都有效。

我确信我错过了内部加入的工作方式。我试图理解为什么fq与Must(+)子句有q不同的行为。

我正在使用solr 4.10

0 个答案:

没有答案