Hibernate Search:索引XML字符串?

时间:2017-10-05 15:40:48

标签: java xml hibernate jpa hibernate-search

我有一个使用Hibernate Search映射的JPA实体。该实体有一个由XML String组成的字段。是否可以索引String的值并对其执行搜索?

例如,如果我的XML String看起来像:

<myElement>
  <myChildElement>Foo</myChildElement>
</myElement>

是否可以使用myChildElement等于Foo的字段查询实体?如果是这样,我将如何映射实体中的字段?如何构成Hibernate Search查询?

1 个答案:

答案 0 :(得分:1)

我不确定将XML存储在实体属性中是个好主意;从长远来看,解析XML并将其存储为embeddable object而不是String字段可能会更容易。

但是,如果必须,是的,您可以索引该XML格式的字段。

您必须实施custom field bridge。在您的实现中,您将使用一些XML解析器,提取对您来说重要的XML节点的值,并将这些值添加到文档中的字段。根据需要命名字段,{@ 1}}按照@Thomas的建议就可以了。

然后,您可以使用xmlField_myElement_myChildElement映射您的实体属性。您可能希望调整other options,尤其是@Field(bridge = @FieldBridge(impl = MyFieldBridgeImpl.class))

要查询字段,没有什么特别的,请the usual。您可能需要调用analyzer以避免将搜索字符串解析为XML,但这是关于它的:

.ignoreFieldBridge