MySQL上的部分标签搜索

时间:2015-01-16 18:12:33

标签: mysql tags

我正在尝试找到最有效的方法来对MySQL进行文本搜索并返回部分结果。我的数据库包含超过1M行。它有一个带有字符串的列,该字符串可以为空,包含由|分隔的标记。 有效的例子是: yellowgreen|yellow|blue|browngreen|blue等。

标签列表会随着时间的推移而增长,因此不会修复。

我想对一个或多个标签进行搜索。例如:redred|yellowred|white|green

最好在每一行上进行字符串匹配,还是创建一个包含所有标记的表和包含这些标记的行索引?

另外,我想做部分比赛。例如,如果我查询red|green|blue,我希望按顺序获得以下匹配项:

  1. 任何有红色和绿色和蓝色的东西
  2. 任何有(红色和绿色)或(红色和蓝色)或(绿色和蓝色)
  3. 的东西
  4. 任何有红色或绿色或蓝色的东西
  5. 如果我创建第二个表格,其中标签指向原始表格中的索引,我可以在红色的行ID和绿色行的行之间进行交叉,但考虑到行数,这可能是很慢。

    关于在哪里查看,现有解决方案等的任何帮助都会很棒!

0 个答案:

没有答案