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

如何在hibernate搜索中索引字符串列表,hibernate,jpa,lucene,hibernate-search,hibernate-ogm,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; @字段(inde

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

我试过这样做

@Field(index = Index.YES, analyze = Analyze.NO, store = Store.YES, analyzer = @Analyzer(definition = "customanalyzer_query"))
@ElementCollection(fetch = FetchType.EAGER)
private Set<String> hashedTagList;
@字段(index=index.YES,analyze=analyze.NO,store=store.YES,analyzer=@analyzer(definition=“customanalyzer\u query”))
@ElementCollection(fetch=FetchType.EAGER)
私有集哈希表;
提交新对象时出错


我将Hibernate ogm与mongodb一起使用

您可以使用@IndexedEmbedded为元素集合编制索引。这是做你想做的事情的最简单的方法:

@Field(analyze = Analyze.NO, store = Store.YES)
@IndexedEmbedded
private Set<String> keywords = new HashSet<String>();
@字段(analyze=analyze.NO,store=store.YES)
@指数化
私有集关键字=新HashSet();
请注意,您必须使用Set,以便清楚地定义所包含元素的类型

这是一个解决办法,我们计划在即将到来的Search6中以更干净的方式解决这个问题

您还可以使用@FieldBridge来反规范化数据。关于使用Set的注释仍然有效

你可以在这里找到我们在我之前的工作中使用的@FieldBridge,它正是为了这个目的:


顺便说一句,您定义了一个分析器,但将analyze设置为analyze.NO,这样就不会使用分析器。

您可以使用@IndexedEmbedded为元素集合编制索引。这是做你想做的事情的最简单的方法:

@Field(analyze = Analyze.NO, store = Store.YES)
@IndexedEmbedded
private Set<String> keywords = new HashSet<String>();
@字段(analyze=analyze.NO,store=store.YES)
@指数化
私有集关键字=新HashSet();
请注意,您必须使用Set,以便清楚地定义所包含元素的类型

这是一个解决办法,我们计划在即将到来的Search6中以更干净的方式解决这个问题

您还可以使用@FieldBridge来反规范化数据。关于使用Set的注释仍然有效

你可以在这里找到我们在我之前的工作中使用的@FieldBridge,它正是为了这个目的:


顺便说一下,您定义了一个分析器,但您将analyze设置为analyze.NO,这样您的分析器就不会被使用。

我遵循了以下操作:立即获取此错误:org.hibernate.search.bridge.BridgeException:Exception,同时调用bridge#objectToString实体类:com.healthLife.notes.entity.notes实体属性路径:hashedTagList字段桥:String2FieldBridgeAdaptor[stringBridge=com.healthLife.notes.helper。CollectionToCSVBridge@56223ef0]如果你不使用我推荐的,也不发布完整的异常,我真的帮不了你。使用工作设置更新了我的答案。很抱歉没有提供完整的异常,我只按照您的建议进行了操作-StringCollectionFieldBridge这是我的实体类--@FieldBridge(impl=StringCollectionFieldBridge.class)@Field(index=index.YES,analyze=analyze.NO,store=store.YES,analyzer=@analyzer(定义=“customanalyzer_query”)@ElementCollection(fetch=FetchType.EAGER)私有集hashedTagList;公有集getHashedTagList(){return hashedTagList;}公有无效集hashedTagList(Set hashedTagList){this.hashedTagList=hashedTagList;}我遵循了以下步骤:立即获取此错误:org.hibernate.search.bridge.BridgeException:Exception,同时调用bridge#objectToString实体类:com.healthelife.notes.entity.notes实体属性路径:hashedTagList字段bridge:String2FieldBridgeAdaptor[stringBridge=com.healthelife.notes.helper]。CollectionToCSVBridge@56223ef0]如果你不使用我的建议,也不发布完整的异常,我真的帮不了你。用工作设置更新了我的答案。很抱歉没有提供完整的异常,我只按照你的建议-StringCollectionFieldBridge这里是我的实体类--@FieldBridge(impl=StringCollectionFieldBridge.class)@Field(index=index.YES,analyze=analyze.NO,store=store.YES,analyzer=@analyzer(definition=“customanalyzer\u query”)@ElementCollection(fetch=FetchType.EAGER)私有集hashedTagList;公有集getHashedTagList(){return hashedTagList;}公有无效setHashedTagList(Set hashedTagList){this.hashedTagList=hashedTagList;}是否尝试了“Set”?它无法索引Object类型的元素。是否尝试了“Set”?它无法索引Object类型的元素。