Релевантность выборки по облаку тэгов

  • Автор темы Автор темы Maler
  • Дата начала Дата начала

Maler

Новичок
Релевантность выборки по облаку тэгов

Есть таблица, одно из полей содержит тэги в виде "string, string, ..."
id|tags
1|тест, тестовый
2|тестируем
3|протестировали

Если делать выборку `tags` LIKE '%тест%', то будут выбраны все строки, а нужно только с id=1.

Вопрос: как сделать?
Нужен способ, который будет по минимуму нагружать базу.
Если полнотекстовый поиск, то не будет ли виснуть база при большом количестве запросов? Есть альтернатива?

Спасибо за помощь.
 
в mysql есть регулярные выражения
По скорости - надо сравнивать
 
сли делать выборку `tags` LIKE '%тест%', т
далай ` LIKE 'тест,%' c запятой (или пробелом), запятую надо будет ставить после каждого слова в твоей тбл...

ЗЫ - я бы с лайком не делалбы....
 
Alexandre
да вот и я думаю, что лайк не есть хорошо, но какие варианты?

Думаю предложенный вариант с регулярками вообще отпадает, хотя тесты не проводил, но почти уверен, что это будет еще медленнее.
 
я храню теги в отдельной таблице, еще в одной - связи между тегом и сущностью.
 
Bitterman да, именно так я и делал, но не хочется делать лишние запросы к базе.
А как по вашему, что будет быстрее LIKE или +2 запроса к базе?

В принципе, вариант с LIKE 'тест,%' подходит, но стоит его использовать?
 
Просто LIKE 'тест,%' мало.. нужно что то вроде
LIKE 'тест,%' OR LIKE '%,тест' OR LIKE '%,тест,%'
 
Думаю предложенный вариант с регулярками вообще отпадает, хотя тесты не проводил, но почти уверен, что это будет еще медленнее
да вот и я думаю, что лайк не есть хорошо, но какие варианты?
1) есть регулярки на UDF, работает относительно шустро...
2) если бы такая задача стояла, я бы критически отнесся к самой структуре БД
в крайнем случае написал бы UDF. Опыт показывает, что UDF на тексте работает от 5 до 35 раз шустрее (очень зависит от длинны поля ), нежеле что-то наварачивать со встроенными функциями.
 
Balloon
спасибо..

Alexandre
UDF почитаю, спасибо.. честно говоря не в курсе о чем идет речь
 
Сверху