【问题标题】:Projecting Grails Searchable plugin result set投影 Grails 可搜索插件结果集
【发布时间】:2013-05-22 13:54:23
【问题描述】:

我有一个复杂的可搜索域类及其相关域类的配置。当我搜索大约 200 个结果(最多:200 个)时,响应时间太长。

在结果集中,我在我的域类中指定了要搜索的所有字段(简单或关联)。 我只需要返回一个 id 列表而忽略域类的其他字段。可能吗?我想这样做是为了加快搜索速度。此 id 列表将用于查询另一个 no-sql 数据库。似乎获取所有字段会减慢我的搜索速度。

【问题讨论】:

  • 如果我没记错的话,可搜索返回的结果是代理,这意味着如果您不尝试访问除 id 之外的其他属性,则不应从数据库中加载它们。您是否尝试过激活 sql 日志记录以查看发送到数据库的查询以查看它是否查询过多?
  • 不,它不是在检索搜索结果时查询数据库。当我设置 max:10 时,它会找到结果计数并返回 10 个项目,当我设置 max:1000 时,它需要 100 倍的时间来响应。
  • 对不起,我误解了这个问题。在不了解您的域类的情况下很难给出明确的解决方案,但是如果您对某些字段不感兴趣并且不想对它们进行索引,您可以将它们从索引中排除,或者如果您想检索它们但不按它们搜索,您可以索引但不能分析它们。
  • 问题与您的解决方案完全相反。我需要按一些字段搜索而不是检索它们。这可能吗?

标签: grails searchable compass-lucene grails-searchable


【解决方案1】:

我认为您可以通过将属性 store 设置为 no 来实现您想要的(让属性可搜索但不能返回)。

例如:

class MyDomain {
    String name
    String email

    static searchable = {
        email index:'analyzed', store:'no'
        name index:'analyzed'
    }
}

在这个域中,我说 name 和 email 被索引和分析(以便可以搜索它们)但是 email 属性没有被存储,所以当返回对象时它将为 null。其他属性检查:http://grails.org/Searchable+Plugin+-+Mapping+-+Searchable+Property

【讨论】:

    猜你喜欢
    • 2011-09-30
    • 2011-05-02
    • 1970-01-01
    • 1970-01-01
    • 2012-02-06
    • 1970-01-01
    • 2012-12-17
    相关资源
    最近更新 更多