如何在Compas Search框架中访问子对象属性?

时间:2010-12-09 17:57:26

标签: search grails lucene grails-plugin compass-lucene

我有以下代码(在grails和Searchable Plugin中称为Compass):

class Topic {

  String name;
  static searchable = true;
}

class Question extends BaseEntity {
  String question;

  static searchable = true;
  static hasMany = [
      topics: Topic
  ]
}

如何使用特定主题ID搜索问题?

类似于Question.search(“topic#id:12”)或Question.search(“topics.id:12”)dosnt工作。

1 个答案:

答案 0 :(得分:0)

在问题中查找您的可搜索块,看起来像这样:

static searchable = {
    topics component: true
}

并在主题中,如果您不希望主题作为根搜索元素返回

static searchable = [
    root: false
]

启动grails并添加一些项目,然后从http://www.getopt.org/luke/下载Luke 并打开您的问题域对象的索引,该索引位于〜/ .grails / projects / projName / searchable-index /'env'/ index / question

如果您检查文档选项卡,您将看到索引中嵌入的术语,如$ / Question / topics

这应该为您提供放入Question.search的路径,例如:

Question.search('$ / Question / topics / id:1')