【问题标题】:Grails searchable plugin: limitless resultsGrails 可搜索插件:无限的结果
【发布时间】:2011-09-30 20:53:34
【问题描述】:

可搜索插件似乎默认只有 10 个结果。如何更改它以返回所有结果?

@比尔 我正在寻找这样的东西:

DomainClass.search("This is the query", [max:every_last_one_of_em])

我可以设置一个 40 的限制并且可能没问题,但是这个搜索的目的是给一个人类一个类似的东西的列表来消除歧义,所以如果一些东西丢失了,愚蠢的人类可能会使用“假设”来得到错误的答案。

【问题讨论】:

  • 注意,如果您在问题中显示了一些代码,我下面的示例可能更容易融入您的代码。

标签: plugins grails searchable grails-searchable


【解决方案1】:

Mikey 要让搜索返回所有结果,只需从 defaultMethodOptions 中删除 max 字段。

你可以在 Configuration -> Searchable.groovy 中找到这个声明

defaultMethodOptions = [
    search: [reload: false, escape: true, offset: 0, max: 10, defaultOperator: "and"],
    suggestQuery: [userFriendly: true]
]

【讨论】:

    【解决方案2】:

    来自文档:http://grails.org/Searchable+Plugin+-+Methods+-+search

    Options affecting the return value
        max - The maximum number of results to return (default 10). Only used with result: "searchResult"
    

    因此,您似乎需要将选项映射传递给您的搜索调用,例如:

    DomainClass.search( "This is the query", [max:1000] )
    

    注意,拥有“无限”搜索结果是一个坏主意(TM)。找出您想要处理的最大值并将其用作您的限制。

    如果必须的话,我建议设置一个“大”的限制。如果您返回了那么多,则进一步查询以找出有多少(也有一个选项),并向用户显示一条消息“这是一个不完整的集合,请进一步限制您的视图”或类似的。

    如果您绝对必须将它们全部展示出来。然后使用该计数查询(这是我上面列出的页面中的一个选项),然后使用该计数作为最大值重新发送搜索。

    【讨论】:

    • @Mikey 因为允许向用户显示一百万行是不好的做法。用户真的希望这种情况发生吗?他们需要等待多长时间?
    猜你喜欢
    • 1970-01-01
    • 2013-12-01
    • 2011-05-02
    • 1970-01-01
    • 1970-01-01
    • 2012-02-06
    • 1970-01-01
    相关资源
    最近更新 更多