如何使用Lucene或hibernate搜索索引和搜索自定义字段?

如何使用Lucene或hibernate搜索索引和搜索自定义字段?,lucene,hibernate-search,Lucene,Hibernate Search,如何使用Lucene或hibernate搜索索引和搜索自定义字段。我找不到索引自定义字段的方法。它们是动态的 这里的“自定义字段”表示用户可以编辑这些字段,这些字段不是硬代码 任何帮助都将是感激的 查询自定义字段 只需使用投影API: FullTextQuery hibernateQuery = fullTextSession .createFullTextQuery(luceneQuery) .setProjection("myField1", "myField2"); L

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

这里的“自定义字段”表示用户可以编辑这些字段,这些字段不是硬代码


任何帮助都将是感激的

查询自定义字段

只需使用投影API:

FullTextQuery hibernateQuery = fullTextSession
     .createFullTextQuery(luceneQuery)
     .setProjection("myField1", "myField2");
List results = hibernateQuery.list();
使用投影,您可以读取存储的任何字段

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

如果出于某种原因,您需要绕过此转换,或者只是想享受解码原始Lucene文档的乐趣,您可以

索引自定义字段

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


编写多个字段的FieldBridge实现示例是。

那么如何为动态字段编制索引?例如:我有两条记录,记录A有一个硬代码字段“Name”和一个动态字段“Custom Field1”。记录B有一个硬编码字段“名称”和一个动态字段“自定义字段2”。因此,我如何为动态字段“Custom Field1”和“Custom Field2”编制索引,因为用户可以为每个记录保存字段。对于记录_1,它是'Field_A',但是对于记录_2,它可能是'Field_B'。你明白我的意思吗?对,忘了索引方面。更新了我的答案。桑恩,谢谢你的回答,你能看看这个问题吗?