0

如何使用 Lucene 或休眠搜索来索引和搜索自定义字段。我找不到索引自定义字段的方法。它们是动态的。

这里的“自定义字段”意味着它们可以由用户编辑,这些字段不是硬代码。

任何帮助将不胜感激!

4

1 回答 1

0

自定义字段查询

只需使用投影 API:

FullTextQuery hibernateQuery = fullTextSession
     .createFullTextQuery(luceneQuery)
     .setProjection("myField1", "myField2");
List results = hibernateQuery.list();

使用投影,您可以读取任何已存储的字段。

如果它与您的索引实体的某些属性名称匹配,它将在转换为适当的类型后实现(如果您有 TwoWayFieldBridge);如果不是,您将获得 String 值。

如果由于某种原因您需要绕过此转换,或者只是想在解码原始 Lucene 文档时获得乐趣,您可以直接打开 IndexReader

索引自定义字段

定义 FieldBridge 时,您可以向索引文档添加任意数量的字段,并且可以根据需要命名每个字段。方法参数名称是一个提示 - 例如用于限定字段名称 - 但您可以忽略它。

编写多个字段的 FieldBridge 实现示例是文档中的 DateSplitBridge

于 2012-10-03T22:10:16.207 回答