我刚刚将我的搜索实现更改为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
注释。你是怎么做到的?
答案 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,它允许您以编程方式获取已配置字段的列表。我认为我更喜欢这种方法高于附加领域。