Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > MySQL > Проблема с запросом FTS


Автор: tishaishii 3.2.2009, 14:45
Запрос 1:
Код
SELECT
    name
FROM
     price
WHERE
      MATCH(`name`) AGAINST('+(КАРАНДАШ) +(КРАСНЫЙ)')
ORDER BY
    MATCH(`name`) AGAINST('+(КАРАНДАШ) +(КРАСНЫЙ)' IN BOOLEAN MODE) DESC


Возвращает несколько результатов, среди которых нет "красных карандашей", а в таблице такой есть.

Запрос 2:
Код
SELECT
    name
FROM
     price
WHERE
      MATCH(`name`) AGAINST('+(КАРАНДАШ) +(КРАСНЫЙ)' IN BOOLEAN MODE)
ORDER BY
    MATCH(`name`) AGAINST('+(КАРАНДАШ) +(КРАСНЫЙ)' IN BOOLEAN MODE) DESC


Возвращает 1 результат "КАРАНДАШ ХИМИЧЕСКИЙ КИН (KIN) 1561G ЦВЕТ КРАСНЫЙ".

Запрос 3:
Код
SELECT
    name, MATCH(`name`) AGAINST('+(КАРАНДАШ) +(КРАСНЫЙ)' IN BOOLEAN MODE) AS C
FROM
     price
WHERE
      MATCH(`name`) AGAINST('+(КАРАНДАШ) +(КРАСНЫЙ)' IN BOOLEAN MODE) OR
      MATCH(`name`) AGAINST('+(КАРАНДАШ) +(КРАСНЫЙ)')
ORDER BY
    MATCH(`name`) AGAINST('+(КАРАНДАШ) +(КРАСНЫЙ)' IN BOOLEAN MODE) DESC


Возвращает несколько результатов, среди которых нет "красных карандашей", а в таблице такой есть. Ни одной записи с C=1.

Надо найти красные карандаши + несколько похожих вариантов.
"WITH QUERY EXPANSION" выдаёт слишком много мусора - не подходит.
Можно было б "UNION DISTINCT", но зачем, если по-идее можно задать условия в "WHERE"...
Что за чертовщина и как с ней бороться?

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)