新手问题 不知道是否是自己想复杂了,求解惑。

small_fish__ · 2014年02月12日 · 最后由 Rei 回复于 2014年02月12日 · 1570 次阅读

目前项目中已经有这样的关系

class Project < ActiveRecord::Base
  has_many :project_materials
end

class ProjectMaterial < ActiveRecord::Base
  belongs_to :project
end

需求大概是这样:项目管理员可以根据自己的项目(project)自定义字段,并该字段适用于该项目下的所有 project_materials, 及 proejct_material 需要根据自定义的字段填写对应的数据。并且能够实现对 project material 对应自定义字段内容的全文搜索和排序。

个人感觉问题的关键是 后台数据库结构自定义字段的全文索引 . 项目采用的是 mysql 和 sphinx.

后台数据库结构

  1. 方法一:使用 rails 的 store 具体操作在 project 添加 custom_columns 在 project_material 表上 custom_column_values 字段。
  2. 方法二:使用关系表 ``` class CustomColumn < ActiveRecord::Base attr_accessible :name belongs_to :project end

class CustomColumnValue < ActiveRecord::Base attr_accessible :value belongs_to :custom_column belongs_to :project_material end

个人目前使用第二个方法,因为使用store没办法做全文搜索(个人感觉,没测试)

自定义字段的全文索引
======

目前采用的是think-sphinx,动手写了下,发现貌似根本就没办法将自定义字段索引起来样,我索引起来的目前只是做sort 和search 使用。


不知道大家是否有过这样的需求?暂时没有想到好方法,纠结中。。



如果可以换组件,Postgresql 有 HStore 类型,Elasticsearch 添加索引的时候是无模式的,解决你的问题。

需要 登录 后方可回复, 如果你还没有账号请 注册新账号