[英]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.