fulltext поиск, условие НЕ?

chisto_tolyan

Враг народа
fulltext поиск, условие НЕ?

День добрый!
Есть поиск по ключ.словам. Можно ли как-то сделать поиск всего, что не содержит данные слова?

например:
слово "авто" - найдено 10 записей
слово "бизнес" - найдено 20 записей
другое - 50 записей
 

chisto_tolyan

Враг народа
да это читал, немного не то...Допустим есть в таблице 100 записей нужно получить:
со словом "авто" - 20 записей
со словом "бухло" - 10 записей
остальное - 70 записей.
а если делать AGAINST('-авто -бухло' IN BOOLEAN MODE) не то получается
 

si

Administrator
тогда через UNION можно сделать, но странные какито потребности
 

chisto_tolyan

Враг народа
да такие вот потребности)Это типа разбивание инфы на категории. Есть таблица, в ней заголовок/статья. Нужно выводить эту инфу по категориям(фильтрам). Вот чтоб по категориям - все ок, а как посчитать и вывести то что не подошло ни под один фильтр - что-то недогоню...
 

ForJest

- свежая кровь
SELECT t1.id
FROM my_table AS t1
LEFT JOIN my_table AS t2 ON t2.id = t1.id
WHERE t2.id IS NULL AND MATCH(t2.body) AGAINST 'word';

Короче обычный LEFT JOIN для определения отсутсвующего соответсвия.
1. находим все id по условию - это у нас типа фильтр получаетя для t2 - получаем выборку id
2. объединяем с t1 и находим все id, которые не попали в выборку.
 

chisto_tolyan

Враг народа
что-то у меня такое чуство, чо при AGAINST IN BOOLEAN MODE индексы совсем не используються, в мане пишут:
They can work even without a FULLTEXT index, although a search executed in this fashion would be quite slow.
Я так понимаю, это значит что если индекса нету - поиск работает, но медленнее, если индекс есть - то работает как обычно?

А не, пардон, туплю...* понатыкал после каждого слова)
 
Сверху