2009-11-30 75 views
0

在我的Grails應用程序中,我使用Searchable插件進行搜索/索引。我想編寫一個涉及多個域類的Compass/Lucene查詢。在那個查詢中,當我想引用一個類的id時,我不能簡單地使用'id',因爲所有的類都有'id'屬性。目前,我解決這個問題,通過增加以下屬性的類FooGrails可搜索插件

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

然後,當我想查詢我使用「fooId」內引用foo的ID。有沒有一種方法可以爲可搜索映射中的屬性提供別名,而不是向類中添加屬性?

回答

1

我終於發現,這是爲了做到這一點:

static searchable = { 
    id: name 'fooId' 
} 
2

你可以給你的id屬性一個更具體的名稱。請參閱this page瞭解如何操作。

0

謝謝!這將非常有效,也就是說,如果我能夠通過每次安裝Searchable插件時應用服務器似乎拋出的OOM錯誤。這些都是通過冒泡:

org.compass.gps.CompassGpsException: Failed to index, execution exception; nested exception is java.util.concurrent.ExecutionException: java.lang.OutOfMemoryError: Java heap space

有沒有人配置的Searchable.groovy中的grails-app/conf目錄進行嚴格的文件:///或MMAP:不使用堆//唯一的配置和索引說一次或每天兩次?搜索不是一件好事 - 但在Grails中使用數據庫鏡像(使用Oracle 10g)的代價似乎是內存密集型的。

確實少量要搜索的域(4)小型數據庫,可能是此應用程序的1-2GB。

+0

原來,這是因爲在同一個Tomcat實例中部署了多個Grails應用程序 - 只是增加了PermSize並將索引設置爲bulkIndexOnStartup =「fork」並立即開始工作。 – mikesalera 2010-06-23 17:46:51