lucene 从自定义FieldBridge索引LongField时出现问题

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

为了使用Lucene进行搜索,我做了一个桥,

public class EntityIDFieldBridge implements FieldBridge {
    @Override
    public void set(String name, Object value, Document document, LuceneOptions luceneOptions) {
        BaseEntity baseEntity = (BaseEntity) value;
        if(value !=null){
            Field field = new LongField(name, baseEntity.getId(),Field.Store.NO);
            document.add(field);
        }
    }
}

当我搜索值时,我没有得到正确的文档。当我搜索词:* 时,我得到了不为空的文档,所以我看到它正在被索引.... StringField工作正常。但我认为它应该是一个长字段。有什么想法吗?

k97glaaz

k97glaaz1#

根据您提供的少量信息,我假设您不会尝试获取null的值。
Field Bridge提供了关于它是什么、lucene支持什么以及它如何工作的更多信息:
在Lucene中,所有的索引字段都必须表示为String。因此,所有用@Field标注的实体属性都必须以String形式进行索引。对于大多数属性,Hibernate Search都可以通过一组内置的桥为您完成转换工作。在某些情况下,尽管您需要对转换过程进行更细粒度的控制。
也适用于Null值
空元素不被索引。Lucene不支持空元素,这也没有多大意义。

相关问题