次のように検索可能なモデルを設定しています。
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() を介して手動で Person、Tag、および PersonTag のインデックス作成/再インデックス化を試みました。また、コントローラーで searchableService を使用して作成しました。
私は別のコントローラーで人を探していますPeopleController
:
def search(){
def result = People.search("${params.q}")
render (view: '/searchable/search.gsp' , model:[searchResult: result])
}