search - 使用Grails和Groovy分割字符串并为每个单词搜索一个域

标签 search grails groovy

我正在创建一个搜索功能以浏览我的一个域类。

我有一个字符串,我想将其拆分为单个单词,以便可以在域类中搜索每个单词。

例如,我的User类具有名称属性和传记属性。
如果我在系统中搜索了“Tom Chicago” ,它将返回所有用户,例如%tom%%chicago%等名称,以及所有带有包含这些单词的传记的用户至。

我已经开始了这样的搜索功能:

def userCriteria = User.createCriteria()
userResults = userCriteria.list(){
    like("name", "%${q}%")
    like("biography", "%${q}%")
}  

显然,这并没有完全满足我的要求。我该如何调整使其适应?

最佳答案

当这将创建一些可怕的SQL语句时,它将执行您想要的操作。当存在诸如Searchable之类的东西时,不能确定我是否可以真诚地在生产系统中使用它。

def userCriteria = User.createCriteria()
def userResults = userCriteria.list() {
  or {
    q.split(" ").each { t ->
      ilike("name", "%$t%")
      ilike("biography", "%$t%")
    }
  }
}

关于search - 使用Grails和Groovy分割字符串并为每个单词搜索一个域,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22133606/

相关文章:

java - 用 Java 存储和搜索大量数据的最快方法

grails - 从 Grails 3 中的 WAR 打包中排除文件/目录

css - 在 css 文件中使用 g.message()

ubuntu - 用于查找 jenkins 构建状态的 Groovy 脚本

asp.net - 使用 DataTable 数据源搜索 Gridview

file - 使用带文件名的存储桶在 s3 存储桶中搜索文件

search - 是否有一种算法可以找到与某些属性匹配的项目,例如 20 个问题游戏?

java - 现代 HTML/CSS/JS 布局以及 Java 后端

groovy - 从字符串闭包

java - Groovy 的 java.util.Date 还是 Java 的 java.util.Date?