我有一个使用Hibernate Search映射的JPA实体。该实体有一个由XML String
组成的字段。是否可以索引String
的值并对其执行搜索?
例如,如果我的XML String
看起来像:
<myElement>
<myChildElement>Foo</myChildElement>
</myElement>
是否可以使用myChildElement
等于Foo
的字段查询实体?如果是这样,我将如何映射实体中的字段?如何构成Hibernate Search查询?
答案 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