我正在阅读StringBridge接口的javadoc注释和它所说的objectToString方法
返回字符串不能为null。它可以是空的。
我想知道原因是什么。我的印象是在写入索引时会忽略空值,这正是我打算做的。是这种情况还是返回null导致问题?如果是,在索引期间是否会忽略返回空字符串?
答案 0 :(得分:1)
据我所知,null在索引编制过程中会被安全处理,并且会被忽略,除非你在字段定义中设置indexNullAs
,在这种情况下,空标记将被编入索引。
编辑:此外,是的,在索引编制实际上会被忽略时返回空字符串,因为搜索不会匹配空字符串。
但是,您的网桥返回的空值是而不是安全处理:
所以,如果:
,那么你应该是安全的@DocumentId
)ignoreFieldBridge
,或者只传递您知道不会导致桥返回空值的值你现在必须注意到,根本不能返回空值...
来源:查看Hibernate Search 5.10.0-SNAPSHOT中的源代码(在这种特定情况下,可能与大多数早期版本相同)。
org.hibernate.search.query.dsl.impl.ConnectedMultiFieldsTermQueryBuilder#createQuery(org.hibernate.search.query.dsl.impl.FieldContext, org.hibernate.search.bridge.spi.ConversionContext)
org.hibernate.search.bridge.util.impl.String2FieldBridgeAdaptor#set
org.hibernate.search.engine.spi.DocumentBuilderIndexedEntity#addFacetDocValues