0

我有一个查询,我在其中选择了狮身人面像索引所需的数据。我做的一件事是多个名称别名、不同语言等的 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

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

4

1 回答 1

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
于 2011-06-28T07:31:32.963 回答