【问题标题】:Does hibernate lucene search provide SQL like analyzerhibernate lucene 搜索是否提供类似 SQL 的分析器
【发布时间】:2016-09-08 17:20:25
【问题描述】:

我需要自定义实体字段之一,使其类似于 sql 喜欢的搜索。

【问题讨论】:

    标签: hibernate lucene hibernate-search


    【解决方案1】:

    当您考虑到可以影响索引的形状以及向其抛出的查询类型时,您可以准确地控制匹配规则。

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

    @Field(analyze=Analyze.NO)
    

    禁用字段分析。这将“按原样”获取字符串,无需任何处理,并将其作为特殊关键字进行索引。 这意味着它不会被标记化(例如它不会被空格分割)也不会被其他处理(例如不是全部小写)。

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

    最后,如果您正在寻找完全匹配,您可以创建一个org.apache.lucene.search.TermQuery,或者创建一个org.apache.lucene.search.PrefixQuery,它以Term 作为参数,并将匹配所有以匹配您的术语开始(前缀)的索引字段,所以这就像“LIKE 'word%'”。

    如果您创建自定义分析器而不是禁用分析器,您将获得更大的灵活性。例如,如果您需要“不区分大小写的 Like”,您可以定义一个不会拆分输入但将其小写的分析器,依此类推..

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-03-12
      • 1970-01-01
      • 2023-03-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多