簡體   English   中英

Lucene / Searchable插件-不重新編制索引的Grails有很多

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

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM