我正在使用Solr 5.4.0。我用嵌套文档导入了一些简单的数据:
<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>
字段定义是:
q={!parent which=content_type:parent}id:d2
我需要查找所有将d2作为子文档的文档。 我使用查询:
"response": {
"numFound": 1,
"start": 0,
"docs": [
{
"id": "d3",
"content_type": "parent",
"_version_": 1531507509621162000,
"_root_": "d3"
},
{
"id": "d5",
"content_type": "parent",
"_version_": 1531507848756854800,
"_root_": "d5"
}
]
}
我希望d5作为结果,但我得到:
{{1}}
为什么d3会在这里返回?我应该在此查询中添加什么条件来过滤掉d3?
答案 0 :(得分:0)
我可以看到两件事情在这里:
正如我在https://stackoverflow.com/a/31952527/3229995中的回答一样,字段“content_type”应仅存在于父文档中。我在以前的Solr版本中有一些不一致的行为,在子文档中存在“content_type”字段和其他值,我不知道当前版本是否已解决此问题。
数据集中有两个id =“d2”的文档。在Solr中,每个文档都有一个唯一的标识符,默认情况下这是id字段。您的收藏中不能有两个具有相同唯一标识符的文档。
我建议相应地更改两个点,以使块连接查询解析器正常工作。