【发布时间】:2010-12-02 11:26:44
【问题描述】:
因此,对于一个新项目,我正在为电子商务网站构建一个系统。我们的想法是从供应商那里进口产品,而不是将它们直接插入我们的目录,我们会将所有信息存储在一个暂存区。每个供应商都有自己的阶段(即数据库中的表),然后我会将多个暂存区域扁平化为单个实体(当前为单个表,但稍后可能会进入 Sphinx 或 Solr)。然后,我们的经销商将能够搜索暂存产品的相关字段(名称和描述)并显示匹配的产品列表,然后选择将这些产品推送到实时目录中。搜索将查询单个表(展平的暂存区)。
我的设计要求仅将可搜索和可过滤的字段存储在单个扁平表中 - 例如name、description、supplier_id、supplier_prod_id 等。搜索查询将仅返回匹配项目的 ID 和用于识别产品来自哪个暂存区域的类 (supplier_id)。
另一位高级工程师认为扁平化搜索表应该包括其他元字段(不会被搜索),但可以在将产品从舞台“推送”到实时目录时使用。他还认为查询应该返回所有这些其他信息。
我对在展平表中仅具有可搜索字段并让搜索仅返回可用于获取有关产品的所有其他必要元数据的类/id 对的感觉非常强烈(简单的 select * from class_table where id in ( 1,2,3))。
我的部分理由是,这将使以后更容易将扁平表从数据库切换到像 sphinx 或 solr 这样的搜索服务器,并且不必仅仅因为搜索的实现而更改其余代码改变了。
我在正确的道路上吗?我如何才能说服其他工程师为什么只保留可搜索字段并只返回 ID 很重要?或者更具体地说,为什么搜索应用程序应该只返回对象的 ID?
【问题讨论】:
标签: search full-text-search solr sphinx