删除重复的单词mysql concat_ws

时间:2011-06-27 17:51:39

标签: mysql sphinx distinct concat-ws

我有一个查询,我在其中选择了狮身人面像索引所需的数据。我做的一件事是一个包含多个名称别名,不同语言等的concat_ws。当名称重叠时,这会出现问题。例如:一个条目的名称为“Clannad”,另一个条目的名称为“CLANNAD - クラナド - ”。另一个名字叫“Clannad After Story”,“クラナドアフターストーリー”和“Clannad:After Story”。现在忍受我,因为我知道在这种特殊情况下这很容易解决,但我希望它能全面适用。如果您搜索“Clannad”,您将首先获得After Story条目,因为'Clannad'上的双重匹配。

我想要做的是删除concat_ws语句中的所有重复单词/非唯一单词。如果可能的话。

查询类似于:

SELECT CONCAT_WS(' ',a.Name,a.Name2,a.Name3,a.Name4) AS name

(我希望我正确地构建了这个问题,这是我的第一个问题) 谢谢,

1 个答案:

答案 0 :(得分:0)

正如Marc在评论中建议的那样,在SQL中进行管理非常痛苦(据我所见)。我建议在另一列中缓存已处理的值,然后将其编入索引。

SELECT a.name_words AS name, ...

组合每个名称值然后获取不同的单词是一个单独的问题 - 但这实际上取决于您手头的语言。正则表达式应该有一些帮助 - 这是Ruby的快速尝试:

[name, name2, name3, name4].join(' ').split(/\b/).reject { |word|
  word.blank?
}.collect { |word|
  word.downcase
}.uniq