我有一个可搜索的模型设置为:
class Tag{
def searchable = true
String name
}
class PersonTag{
static belongsTo = [person: Person]
static searchable = {
tag(component: true)
person(component: true)
}
static PersonTag addTag(String name, Person person){
if(person && person.id){
def tag = Tag.findOrCreate(name)
def t = new PersonTag(tag:tag, person:person)
t.save(flush:true)
return t
}
}
}
class Person{
static searchable = {
name boost: 2.0
tags component:true
}
}
我正在做的是按标签搜索“人”。当我的服务器启动时,它会索引所有内容,并且人们工作的所有现有标签。如果我添加一个新标签,在服务器重新启动之前我无法搜索它。但是,如果我更改了一个简单的属性,例如人名,我可以在不重新启动的情况下搜索它。我对标签的所有更改都经过PeopleAdminController.
关于为什么按标签搜索不起作用的任何建议?我什至尝试通过 domainInstance.reindex() 以及在控制器中使用 searchableService 手动索引/重新索引 Person、Tag 和 PersonTag。
我正在寻找不同控制器中的人PeopleController
:
def search(){
def result = People.search("${params.q}")
render (view: '/searchable/search.gsp' , model:[searchResult: result])
}