使用Hibernate Search时如何搜索所有字段

时间:2014-08-14 13:31:27

标签: java hibernate java-ee full-text-search hibernate-search

我刚刚将我的搜索实现更改为Hibernate Search 4.5.1.FINAL。我正在尝试创建一个搜索所有字段中的单词的查询。但是,我无法找到有关如何实现这一目标的任何内容。在ElasticSearch中,您有一个_all字段。 http://www.elasticsearch.org/guide/en/elasticsearch/reference/current/mapping-all-field.html

我提供了一个文本字段,用户可以在其中写入任何内容然后获得结果。但我不知道他/她想要搜索哪些字段。

如何在Hibernate Search中执行此操作?除常规@Field(name="_all")注释外,我不想添加@Field注释。你是怎么做到的?

2 个答案:

答案 0 :(得分:2)

似乎 Hibernate Search 本身不支持此功能(因为lucene家伙也没有建议)。

似乎只有一个选项存在,您已经说过并拒绝使用它;使用名称注释所有字段:

@Fields({
  @Field(index = Index.TOKENIZED),
  @Field(name = "ALL", index = Index.TOKENIZED)
})
//your variable declaration

答案 1 :(得分:0)

正如https://stackoverflow.com/a/25324486/115835中所建议的,一个选项是确保该属性也被索引到共享字段中。

另一种方法是以所有字段都被定位的方式构建查询。用户仍然只能看到一个输入字段,但您可以根据自己喜欢的字段构建一个布尔查询(需要注意分析器和其他影响字段的设置)。您甚至可以使用元数据API,它允许您以编程方式获取已配置字段的列表。我认为我更喜欢这种方法高于附加领域。