Grails searchable插件

时间:2009-11-30 18:08:16

标签: grails lucene searchable compass-lucene

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

来解决此问题
public Long getFooId() {
    return id
}
static transients = ['fooId']

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

3 个答案:

答案 0 :(得分:2)

您可以为id属性指定更具体的名称。有关如何执行此操作,请参阅this page

答案 1 :(得分:1)

我终于发现这是做到这一点的方法:

static searchable = {
    id: name 'fooId'
}

答案 2 :(得分:0)

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

  

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

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

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