[英]Lucene /Searchable Plugin - Grails not reindexing has many
我有一个可搜索的模型设置为:
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
搜索People:
def search(){
def result = People.search("${params.q}")
render (view: '/searchable/search.gsp' , model:[searchResult: result])
}
好吧,我找到了一种“解决问题”的方法,但是我不喜欢它(因为它是一个reindexAll()
)。 添加标签后,如果我致电:
searchableService.reindexAll()
它会工作。 我不明白以下原因为何不起作用:
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)
t.index()
tag.reindex()
person.reindex()
return t
}
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.