如何在hibernate搜索中索引字符串列表

时间:2018-03-08 14:22:39

标签: hibernate jpa lucene hibernate-search hibernate-ogm

如何在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

1 个答案:

答案 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,这样你的分析仪就不会被使用了。