【问题标题】:Spring elasticsearch string like querySpring elasticsearch字符串类似查询
【发布时间】:2016-09-06 20:00:17
【问题描述】:

我需要使用like 运算符创建一个elastichsearch 查询,其工作方式与SQL 中的LIKE 子句类似。有可能吗?

目前我正在使用下面的查询,但它仅在与文档中的单词完全匹配的单词时返回:

searchRepo.search(queryStringQuery(queryString));

例如:

查询:smit 什么也不返回; (如果他们的名字包含 smit,我需要查询以返回人员列表) 查询:smith 返回一个名为“John Smith”的人

【问题讨论】:

    标签: spring elasticsearch


    【解决方案1】:

    我在查看弹簧弹性搜索查询构建器的可能功能时找到了一个简单的答案(这不是@Val 所说的最佳方式)

    searchRepo.search(simpleQueryStringQuery("*"+ queryString +"*").analyzeWildcard(true))
    

    【讨论】:

    • 很好,但是请注意,这不是最高效的解决方案,因为通配符查询会影响您的性能,尤其是在通配符作为查询字符串的前缀时
    • 谢谢,如果你能提供更好的方法,我将不胜感激:)
    • 当通配符是查询字符串的后缀时,你可以随心所欲,但是当通配符也是查询的前缀时,解决问题的正确方法是使用ngram标记过滤如这个答案所示:stackoverflow.com/questions/39113127/… 然后你可以使用一个简单的termQuery(queryString)
    猜你喜欢
    • 2015-04-09
    • 2012-02-12
    • 1970-01-01
    • 2014-12-09
    • 2017-03-28
    • 1970-01-01
    • 1970-01-01
    • 2018-08-03
    • 1970-01-01
    相关资源
    最近更新 更多