我有一个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