Solr 5.4.0 kullanıyorum. Ben iç içe belgelerle bazı basit veri aktardıysanız:Solr, çocuk belgelerini filtrelerken yanlış sonuçlar döndürüyor
<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>
alan tanımları şunlardır:
<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>
ben çocuk belgesi olarak d2 olan tüm belgeleri bulmak gerek. Ben sorguyu kullanarak:
q={!parent which=content_type:parent}id:d2
Ben sonuç olarak d5 beklenebilir ama bunun yerine alıyorum:
"response": {
"numFound": 1,
"start": 0,
"docs": [
{
"id": "d3",
"content_type": "parent",
"_version_": 1531507509621162000,
"_root_": "d3"
},
{
"id": "d5",
"content_type": "parent",
"_version_": 1531507848756854800,
"_root_": "d5"
}
]
}
Neden d3 burada döndürülür? D3'ü filtrelemek için bu sorguya hangi koşulu eklemeliyim?
Bunun neden olduğunu anladınız mı? 6.6'da benzer bir şey gördüm, ama bizim durumumuzda kemancı ele geçirdik ve hepsi doğru görünüyordu, ama 100 belgeden en az 1 tanesi konudan etkilendi. – eglasius