hibernate lucene搜索是否像分析器一样提供SQL

时间:2016-09-08 03:14:24

标签: hibernate lucene hibernate-search

我需要自定义一个实体字段,就像sql like search。

1 个答案:

答案 0 :(得分:0)

当您认为可以影响索引的形状以及您向其投掷的查询类型时,您可以准确地控制匹配规则。

您问题的简单解决方案是使用

@Field(analyze=Analyze.NO)

禁用对该字段的分析。这将采用String"原样"没有任何处理和索引,它就像一个特殊的关键字。 这意味着它不会被标记化(例如它不会被分割成空格),也不会被处理(例如,不是全部小写)。

在查询时,您必须注意不要处理您正在寻找的关键字。这通常使用org.apache.lucene.index.Term完成。

最后,如果您要查找完全匹配,可以创建org.apache.lucene.search.TermQuery,或者org.apache.lucene.search.PrefixQuery创建一个Term作为参数,并匹配所有索引字段哪个开头(前缀)匹配你的术语,所以这就像"喜欢'字%' "

如果不是禁用分析器而是创建自定义分析器,则可以获得更大的灵活性。例如,如果你需要一个"不区分大小写的喜欢"您可以定义一个分析器,它不会分割您的输入但会小写它,等等..