在Solr中查询XML

时间:2014-03-09 23:27:50

标签: xml solr lucene

我在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的情况下编写查询来实现此目的?

1 个答案:

答案 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,它将返回匹配的文档。