如何在Hibernate搜索中索引字符串列表?
我试过这个
@Field(index = Index.YES, analyze = Analyze.NO, store = Store.YES, analyzer = @Analyzer(definition = "customanalyzer_query"))
@ElementCollection(fetch = FetchType.EAGER)
private Set<String> hashedTagList;
我在提交新对象时遇到错误。
我正在使用Hibernate ogm 与 mongodb
答案 0 :(得分:1)
您可以使用@IndexedEmbedded索引元素集合。这是做你想做的最简单的方法:
@Field(analyze = Analyze.NO, store = Store.YES)
@IndexedEmbedded
private Set<String> keywords = new HashSet<String>();
请注意,您必须使用Set,以便明确定义所包含元素的类型。
这是一种解决方法,我们计划在即将推出的搜索6中以更清晰的方式解决问题。
您还可以使用@FieldBridge对数据进行非规范化。关于使用Set的说法保持有效。
您可以在此处找到我之前作业中使用的@FieldBridge:https://github.com/openwide-java/owsi-core-parent/blob/master/owsi-core/owsi-core-components/owsi-core-component-jpa/src/main/java/fr/openwide/core/jpa/search/bridge/StringCollectionFieldBridge.java。
顺便说一下,你定义了一个分析器,但你将analyze设置为Analyze.NO,这样你的分析仪就不会被使用了。