0

在我的 Grails 应用程序中,我使用 Searchable 插件进行搜索/索引。我想编写一个涉及多个域类的 Compass/Lucene 查询。在该查询中,当我想引用一个类的 id 时,我不能简单地使用“id”,因为所有类都有一个“id”属性。目前,我通过将以下属性添加到类 Foo 来解决此问题

public Long getFooId() {
    return id
}
static transients = ['fooId']

然后,当我想在查询中引用 Foo 的 id 时,我使用“fooId”。有没有办法可以为可搜索映射中的属性提供别名,而不是向类添加属性?

4

3 回答 3

2

您可以为 id 属性指定更具体的名称。请参阅此页面了解如何执行此操作。

于 2009-11-30T21:08:41.197 回答
1

我终于发现这是这样做的方法:

static searchable = {
    id: name 'fooId'
}
于 2009-11-30T23:28:14.613 回答
0

谢谢!这会很好用,也就是说,如果我能克服 OOM 错误,应用服务器似乎在每次安装 Searchable 插件时都会抛出。这些通过以下方式冒泡:

org.compass.gps.CompassGpsException:索引失败,执行异常;嵌套异常是 java.util.concurrent.ExecutionException: java.lang.OutOfMemoryError: Java heap space

有没有人在 grails-app/conf 中配置了他们的 Searchable.groovy 以执行严格的 file:/// 或 mmap:// 仅配置,不使用堆,并且每天索引一次或两次?搜索并不是一件好事——但在 Grails(使用 Oracle 10g)中使用数据库镜像的成本似乎是内存密集型的。

要搜索的域数量非常少 (4) 小型数据库,此应用程序可能需要 1-2gb。

于 2010-06-09T20:39:30.653 回答