1

我有多个域对象,并且有一对多、多对多的关系,搜索数据来自几个表,而且总是相同的。我在我的应用程序中实现了 Searchable 插件,并且当我有这样的单个搜索字段时能够检索结果:

<g:form url='[controller: "searchable", action: "searchContact"]' id="searchableForm" name="searchableForm" method="get">
    <g:textField name="query" value="${params.query}" size="40"/>
    <input type="submit" value="Search Contact" />
</g:form>. 

但我有多个文本字段、复选框和 g:select 框来获取 searchTerm。基于任何一个字段或多个搜索选择,我必须获得搜索结果。如何在两者之间包含所有搜索字段,并为所有参数提供一个提交按钮。这是我的搜索操作代码:

def searchContact = { 
    if (!params.query) {
        return [:]
    }
    try {
        String searchTerm = params.query
        println searchTerm
        return [searchResult: searchableService.search(searchTerm, params)]
    } catch (SearchEngineQueryParseException ex) {
        return [parseException: true]
    }
}

快速的建议表示赞赏。

4

1 回答 1

1

您可以在一个字符串查询中传递所有术语,用空格分隔每个标记/单词,例如,如果您有两个域类,一个称为 Person,另一个称为 Job,并且您搜索“John”和“Engineer”,您的字符串查询应该是“约翰工程师”,这应该让你两个域对象。

这就是你要找的吗?

于 2011-04-28T20:30:37.343 回答