PHP MySQL показывает связанные элементы, используя теги - PullRequest
1 голос
/ 26 июня 2011

Я хочу показать похожие элементы, используя теги.

У меня есть таблица элементов с itemid, itemname и itemtagids в качестве столбцов.itemtagids имеет идентификаторы тегов CSV.

Скажем, в itemid 1, у меня есть 3 идентификатора тегов 1,2,3, а в itemid 2 у меня есть 4 идентификатора тегов 3,4,5,6 в itemid 3 У меня 2 идентификатора тегов2,3 и т. Д. *

Я хочу, чтобы для itemid 1 в аналогичных элементах сначала показывалось 3-е itemid (поскольку оно имеет 2 соответствия), затем itemid 2 и т. Д.

Я использовал следующее:

SELECT itemid 
FROM items 
WHERE MATCH (itemtagids ) AGAINST ('2823' IN BOOLEAN MODE)

возвращает результаты только в том случае, если в столбце идентификаторов itemtags есть один itemtagid.

последовательность - это нечтоложь: 234,546,2823,342,5643 Итак, здесь 2823 - это не отдельное слово, а полная строка из 234,54 ... 43

, что нужно сделать в этом случае, когда теги представлены в виде идентификаторов и в CSVформат.

1 Ответ

1 голос
/ 26 июня 2011

Похоже, FULLTEXT - не правильный поиск для вашего случая. Попробуйте вместо этого использовать регулярные выражения.

SELECT `itemid`
FROM `items`
WHERE `itemtagids` REGEXP '^2823$' 
OE `itemtagids` REGEXP '^2823,'
OR `itemtagids` REGEXP ',2823$'
OR `itemtagids` REGEXP ',2823,';

РЕДАКТИРОВАТЬ: или, возможно, вы могли бы сделать с одним регулярным выражением, как:

SELECT `itemid`
FROM `items`
WHERE `itemtagids` REGEXP '[[:<:]]2823[[:>:]]';

Надеюсь, это поможет!

...