【发布时间】:2011-11-30 20:42:54
【问题描述】:
在我上一个问题 (http://*.com/questions/8217522/best-way-to-search-for-partial-words-in-large-mysql-dataset) 之后,我选择了 Sphinx 作为我的 MySQL 数据库上方的搜索引擎。
我用它做了一些小测试,它看起来很棒。但是,我现在正处于需要一些帮助/意见的地步。
我有一个表格文章(结构并不重要)、一个表格属性(结构也不重要)和一个表格,其中包含每篇文章的每个属性的值(这就是它的全部内容)。 存储这些值的表具有以下结构:
articleID UNSIGNED INT
propertyID UNSIGNED INT
value VARCHAR(255)
主键是articleID和propertyID的复合键。
我希望 Sphinx 搜索 value 列。但是,要在 Sphinx 中创建索引,我需要一个唯一的 id。我这里没有。
此外,在搜索时,我希望能够过滤 propertyID 列(例如,仅搜索 propertyID 2 的值,我可以通过将其定义为属性来做到这一点)。
在 Sphinx 论坛上,我发现我可以创建一个多值属性,并将其设置为我的 Sphinx 索引的查询:
SELECT articleID, value, GROUP_CONCAT(propertyID) FROM t1 GROUP BY articleID
articleID 现在将是唯一的,但是,现在我缺少值。所以我很确定这不是解决方案,对吧?
还有一些其他选项,例如:
- 向表中添加一个额外的列,这是唯一的
- 在查询中创建计算的唯一值(如
articleID*100000+propertyID)
还有其他我可以使用的选项吗?你会怎么做?
【问题讨论】:
标签: mysql search-engine sphinx