java - Hibernate 搜索在索引中存储 byte[]

标签 java lucene indexing bytearray hibernate-search

我的 POJO 中有以下配置:

@Field(index = Index.NO, store = Store.YES)
private byte[] file;

当我启动我的 Apps 容器时,出现以下异常:

Caused by: org.hibernate.search.SearchException: Unable to guess FieldBridge for file at org.hibernate.search.bridge.BridgeFactory.guessType(BridgeFactory.java:249) at org.hibernate.search.engine.AbstractDocumentBuilder.bindFieldAnnotation(AbstractDocumentBuilder.java:707) at org.hibernate.search.engine.AbstractDocumentBuilder.checkForField(AbstractDocumentBuilder.java:568) at org.hibernate.search.engine.AbstractDocumentBuilder.initializeMemberLevelAnnotations(AbstractDocumentBuilder.java:436) at org.hibernate.search.engine.AbstractDocumentBuilder.initializeClass(AbstractDocumentBuilder.java:383) at org.hibernate.search.engine.AbstractDocumentBuilder.checkForIndexedEmbedded(AbstractDocumentBuilder.java:631) at org.hibernate.search.engine.AbstractDocumentBuilder.initializeMemberLevelAnnotations(AbstractDocumentBuilder.java:440) at org.hibernate.search.engine.AbstractDocumentBuilder.initializeClass(AbstractDocumentBuilder.java:383) at org.hibernate.search.engine.AbstractDocumentBuilder.(AbstractDocumentBuilder.java:134) at org.hibernate.search.engine.DocumentBuilderIndexedEntity.(DocumentBuilderIndexedEntity.java:178) at org.hibernate.search.spi.SearchFactoryBuilder.initDocumentBuilders(SearchFactoryBuilder.java:375) at org.hibernate.search.spi.SearchFactoryBuilder.buildNewSearchFactory(SearchFactoryBuilder.java:262) at org.hibernate.search.spi.SearchFactoryBuilder.buildSearchFactory(SearchFactoryBuilder.java:144) at org.hibernate.search.event.FullTextIndexEventListener.initialize(FullTextIndexEventListener.java:151) at org.hibernate.event.EventListeners$1.processListener(EventListeners.java:198) at org.hibernate.event.EventListeners.processListeners(EventListeners.java:181) at org.hibernate.event.EventListeners.initializeListeners(EventListeners.java:194) ... 41 more

如何在 Hibernate Search (Lucene) 索引中存储字节数组?

最佳答案

您需要一个 field bridge .

例如:

@Field(index = Index.NO, store = Store.YES)
@FieldBridge(impl = MyFieldBridge.class)
private byte[] file;


//The file bridge
public class MyFieldBridge implements StringBridge {

    @Override
    public String objectToString(final Object object) {

        byte[] file = (byte[]) object;

        return MagicFileUtil.getTextContent(file)
    }
}

关于java - Hibernate 搜索在索引中存储 byte[],我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7796616/

相关文章:

Java 8 Boolean.logicalOr 方法

java - 使用for循环向StringBuilder插入重复项的方法

java - 我应该只将 Lucene 用于搜索吗?

lucene - 在 Elasticsearch 中提升字段前缀匹配

python - 如何删除 numpy 数组中所有 numpy 数组中的第 n 个元素?

mysql - 组合主键 VS。 MySQL 中的辅助键

java - 位图 API 上的 ScriptIntrinsicBlur<14

java - NullPointerException找不到错误

java - Lucene 3.5 搜索时不支持中文、俄语、韩语

python - 使用 numpy 将 bool 数组索引到多维数组中