Ruby on rails 索引字段+;使用Thinking Sphinx中的自定义文本

Ruby on rails 索引字段+;使用Thinking Sphinx中的自定义文本,ruby-on-rails,sphinx,thinking-sphinx,Ruby On Rails,Sphinx,Thinking Sphinx,我有一些不同模型的索引,有时用户可能会搜索存在于多个模型中的值。现在,如果用户真的只对其中一个模型中的数据感兴趣,我希望用户能够用一些限制范围的东西对查询进行预/后修复 例如,如果我只想在我的市政模型中找到匹配项,我已经在该模型中设置了一个索引,以便用户现在可以查询“xyz市政”(引号中): 这个很好用。现在我还有一个人模型,与市政当局有关。当只在Person模型上搜索时,我希望有相同的可用功能,这样我就可以说Person.search(“xyz市政”)并让所有人都连接到该市政。这是我在个人模型

我有一些不同模型的索引,有时用户可能会搜索存在于多个模型中的值。现在,如果用户真的只对其中一个模型中的数据感兴趣,我希望用户能够用一些限制范围的东西对查询进行预/后修复

例如,如果我只想在我的市政模型中找到匹配项,我已经在该模型中设置了一个索引,以便用户现在可以查询
“xyz市政”
(引号中):

这个很好用。现在我还有一个人模型,与市政当局有关。当只在Person模型上搜索时,我希望有相同的可用功能,这样我就可以说Person.search(“xyz市政”)并让所有人都连接到该市政。这是我在个人模型中的当前定义:

  has_many :municipalities,  :through => :people_municipalities

  define_index do
    indexes [lastname, firstname], :as => :name, :sortable => true
    indexes municipalities.name, :as => :municipality_name, :sortable => true
  end

但是,有没有什么方法可以在这个模型上创建一个索引,引用市政当局,就像我在市政当局模型本身上所做的那样?

如果您查看源代码的
config/development.sphinx.conf
的SQL\u查询设置中生成的SQL,您将看到uscitizes.name是如何连接在一起的(我将发布一个示例,但这取决于您的数据库-MySQL和PostgreSQL处理方式完全不同)

我建议复制该字段,并插入如下内容(SQL是伪代码):


另外:添加:sortable不仅适用于此字段,也适用于协会的原始字段-您是否要按照所有合并的市政名称进行排序?我猜不是:)

如果您查看源
person\u core\u 0的
config/development.sphinx.conf
的SQL\u查询设置中生成的SQL,您将看到mucitizes.name是如何连接在一起的(我会发布一个示例,但这取决于您的数据库-MySQL和PostgreSQL处理方式完全不同)

我建议复制该字段,并插入如下内容(SQL是伪代码):

另外:添加:sortable不仅适用于此字段,也适用于协会的原始字段-您是否要按照所有合并的市政名称进行排序?我猜不是:)

  has_many :municipalities,  :through => :people_municipalities

  define_index do
    indexes [lastname, firstname], :as => :name, :sortable => true
    indexes municipalities.name, :as => :municipality_name, :sortable => true
  end
indexes "GROUP_CONCAT(' municipality ' + municipalities.name)",
  :as => :extended_municipality_names