2011-03-21 116 views
1

我有一列包含電影的風格(最多三個以斜槓分隔的說明符),如「喜劇/浪漫/冒險」。在mysql或php中是否有一個函數或類似的東西可以讓我採用電影的流派,並將它與其他行的其他流派進行比較並按照相似性排列它們?例如,製作一部有「喜劇/浪漫/冒險」影片的電影,首先會有三部電影,其次是帶有其中兩部電影的電影,最後是可能有其中一種風格的電影。mysql中的詞相似性/相似性

+2

你可能規範化表格嗎?那麼你可以這樣排序.. – konsolenfreddy 2011-03-21 20:46:31

+0

請重新正常化。這不是一個好的設計。 – Randy 2011-03-21 21:04:46

回答

3

如果在流派列上啓用full-text indexing,則可以這樣做。儘管如此,我建議使用外部全文搜索引擎(如sphinx)來處理這個問題,因爲MySQL內置的全文索引確實不是那麼好。

你會通過在類型字段中設置全文索引啓動

ALTER TABLE movies ADD FULLTEXT INDEX (genre);

然後你可以從這個像這樣選擇:

SELECT *, MATCH(genre) AGAINST ('comedy romance adventure') AS relevancy FROM movies ORDER BY relevancy DESC;