lucene @数组的字段注解

vwkv1x7d  于 2022-11-07  发布在  Lucene
关注(0)|答案(1)|浏览(166)

在我的应用程序中,我必须将实体存储在Infinispan缓存中,并在这种内存中的repo上运行用户提供的搜索查询。问题是,我的实体有一个字符串数组,假设它是这样的:

@Indexed(index = "bookIndex")
public class Book {
    @Field
    private Long id;
    @Field
    private String[] authors;
}

我的问题是,显然你不能像这样索引数组。明显的解决方案是创建Author对象并嵌入索引,但这不是理想的选择(性能问题-dto必须尽可能小)。
是否有其他方法来索引此类字段?

iszxjhcz

iszxjhcz1#

编辑:从Hibernate Search 6开始,您不需要任何解决方法:下面的Map将如预期的那样工作,索引数组的元素。

@Indexed(index = "bookIndex")
    public class Book {
        @Field
        private Long id;
        @FullTextField
        private String[] authors;
    }

至于休眠搜索5...
只要在数组属性上使用@IndexedEmbedded,Hibernate就会理解您是指数组元素而不是数组本身的索引:

@Indexed(index = "bookIndex")
    public class Book {
        @Field
        private Long id;
        @Field
        @IndexedEmbedded
        private String[] authors;
    }

该特性没有文档记录,因为它可能会导致非基元数组元素的奇怪行为,但在您的情况下应该是好的。
或者,您可以编写自己的桥:https://docs.jboss.org/hibernate/stable/search/reference/en-US/html_single/#section-custom-bridges

相关问题