我在Solr中存储了一些XML,如下所示:
<MainInfo>
<Info>
<Info name="Bob" city="Columbus" />
<Info name="Joe" city="Cincinnati" />
</Info>
</MainInfo>
如果XML中有一个元素(@ name =“Bob”AND @ city =“Cincinnati”),我想要做的就是获取此文档。如果我写这样的东西,我会受到打击 - 虽然我实际上并不匹配我正在寻找的东西:
q = MainData.Info.Info@name:Bob AND MainData.Info.Info@city:Cincinnati
我希望我的条件仅匹配同一元素中的属性,例如:
<MainData>
<Info>
<Info name="Bob" city="Columbus" />
<Info name="Joe" city="Cincinnati" />
<Info name="Bob" city="Cincinnati" /> (only match this)
</Info>
</MainData>
是否可以在不更改XML的情况下编写查询来实现此目的?
答案 0 :(得分:0)
Solr不支持存储xml并查询它,至少是你要求的方式。它支持xml结构的wile索引和查询,但它具有特定的结构。请参阅https://wiki.apache.org/solr/UpdateXmlMessages。
但是您正在寻找的结果可以通过定义Solr支持的文档结构来实现。
<MainData>
<Info>
<Info name="Bob" city="Columbus" />
<Info name="Joe" city="Cincinnati" />
<Info name="Bob" city="Cincinnati" /> (only match this)
</Info>
</MainData>
对于上面的示例,请参考上面的URL并创建3个不同的solr文档。然后,如果您查询name:Bob AND city:Cincinnati
,它将返回匹配的文档。