1

好吧,我一直在尝试让可搜索插件与我当前的应用程序一起使用,但有一件事情困扰着我:

每次搜索都完全依赖于 Lucene 索引。

这会导致一些令人不安的问题(例如:http: //jan-so.blogspot.mx/2009/04/eager-fetching-and-searchable-plugin-in.html)。基本上,每个一对多关系在搜索结果中都会有一个空值。为避免这种情况,您必须使很多域可搜索,但是,这意味着我的数据库的一半将映射到 Lucene 索引中……这听起来是错误的。

我目前处于开发环境中,所以所有内容都加载到内存中,Lucene 使 java 使用的内存至少增加了 40%(总共使用了 1.2GB,并且我已经尽可能限制了其中包含的内容)onlyexclude)。

那么,我可以阻止它仅依赖 Lucene 索引吗?我希望它在索引上搜索,但不只返回索引的内容。或者将所有内容保存在索引中(从而以可搜索的方式进行)而不是手动进行 HQL 查询真的很方便吗?

4

2 回答 2

1

我认为您需要阅读component在域类定义中使用关键字。

见这里: http: //grails.org/Searchable+Plugin+-+Mapping+-+Compass+concepts#Searchable Component

通过这种方式,您可以包含域模型中的相关信息,而不会用这么多额外的类污染索引。

于 2012-04-20T14:33:06.243 回答
0

那么答案是:是的,您可以检索对象的所有信息,而无需将其添加到索引中。

为此,您需要配置插件。首先创建配置文件:

grails install-searchable-config

然后打开它,找到并将参数defaultMethodOptions更改为. 像这样的东西:reloadtrue

defaultMethodOptions = [
    search: [reload: true, escape: false, offset: 0, max: 10, defaultOperator: "and"],
    suggestQuery: [userFriendly: true]
]

现在搜索将从数据库中重新加载对象,但是,正如配置文件所述,搜索会变慢,因为现在它需要连接到数据库。

于 2012-10-22T01:38:17.217 回答