如何使用Lucene或hibernate搜索索引和搜索自定义字段。我找不到索引自定义字段的方法。他们很有活力。
'自定义字段'在这里意味着它们可以被用户编辑,这些字段不是硬代码。
任何帮助都会感激不尽!
答案 0 :(得分:0)
查询自定义字段
只需使用投影API:
FullTextQuery hibernateQuery = fullTextSession
.createFullTextQuery(luceneQuery)
.setProjection("myField1", "myField2");
List results = hibernateQuery.list();
使用投影,您可以阅读任何字段,只要它已存储。
如果它与索引实体的某些属性名称匹配,它将在转换为适当的类型后实现(如果你有一个TwoWayFieldBridge);如果没有,你将获得字符串值。
如果由于某种原因你需要绕过这种转换,或者只是想要解码原始的Lucene文档,你可以open an IndexReaderdirectly。
索引自定义字段
定义FieldBridge时,您可以根据需要为索引文档添加任意数量的字段,并且可以根据需要为每个字段命名。 方法参数 name 是一个提示 - 例如用于范围字段名称 - 但您可以忽略它。
编写多个字段的示例FieldBridge实现是the DateSplitBridge in the documentation。