【发布时间】: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