查询以搜索是否出现搜索字符串中的任何单词

问题描述

我有以下文件

     fName : "Samuel",sName : "Erick Jameson"

如果搜索是通过塞缪尔(Samuel),埃里克(Erick),詹姆森(Jameson),埃里克(Erick Jameson),塞缪尔埃里克(Samuel Erick)等进行搜索,我想返回用户

基本上,如果fName或sName中存在任何单词,我想将其返回。现在,我有以下查询

 Function.lower(Expression.property("fName")).like(Expression.string("%" + searchTermlC + "%"))))
 .or((Expression.property("lName").like(Expression.string("%" + searchTermlC + "%")));

我的搜索结果是:

 Samuel              found
 Erick               found
 Jameson             found
 Erick Jameson       found

未找到以下内容

 Samuel Erick
 Erick Samuel
 Samuel Jameson

...

什么查询可以做到?

解决方法

上面的查询中指出了一些错误:

  1. 左方括号不匹配
  2. 您忘记了Function.lower(Expression.property(“ lName”))。

我认为当您进行自己的测试时,查询语法是正确的,否则您将不会获得任何结果。

您得到的结果与like运算符一样。如果您希望查询包括:

Samuel Erick
Erick Samuel
Samuel Jameson

结果中,您可以尝试使用In运算符。