我正在使用Solr 5.4.0。我已經進口了一些簡單的數據與嵌套文檔:Solr在過濾子文檔時返回不正確的結果
<doc>
<field name="id">d1</field>
<field name="content_type">parent_document</field>
<doc>
<field name="id">d2</field>
<field name="content_type">related_parent</field>
</doc>
</doc>
<doc>
<field name="id">d3</field>
<field name="content_type">parent</field>
<doc>
<field name="id">d4</field>
<field name="content_type">related_parent</field>
</doc>
</doc>
<doc>
<field name="id">d5</field>
<field name="content_type">parent</field>
<doc>
<field name="id">d2</field>
<field name="content_type">related_parent</field>
</doc>
</doc>
字段定義是:
<field name="id" type="string" multiValued="false" indexed="true" required="true" stored="true"/>
<field name="content_type" type="lowercase" omitTermFreqAndPositions="true" multiValued="false" indexed="true" required="true" stored="true"/>
<fieldType name="lowercase" class="solr.TextField" positionIncrementGap="100">
<analyzer>
<tokenizer class="solr.KeywordTokenizerFactory"/>
<filter class="solr.LowerCaseFilterFactory"/>
</analyzer>
我需要找到具有D2作爲一個子文檔的所有文檔。 我使用查詢:
q={!parent which=content_type:parent}id:d2
我希望D5作爲結果,而是我得到:
"response": {
"numFound": 1,
"start": 0,
"docs": [
{
"id": "d3",
"content_type": "parent",
"_version_": 1531507509621162000,
"_root_": "d3"
},
{
"id": "d5",
"content_type": "parent",
"_version_": 1531507848756854800,
"_root_": "d5"
}
]
}
爲什麼這裏返回D3?我應該添加到這個查詢過濾掉d3的條件是什麼?
你發現它爲什麼會發生?我在6.6中看到過類似的情況,但在我們的案例中,我們採取了提琴手捕捉並且看起來都是正確的,但是100個文檔中至少有1個受到了該問題的影響。 – eglasius