PHP в деталях



         

Комментарии к статье ""


25.9.2001 17:09  hsw  []

В случае, если в WHERE используется функция MATCH,

"relev>0" и "order by relev desc" выполняются автоматически.

см. http://www.mysql.com/doc/F/u/Fulltext_Search.html

Ответ DL:

Как раз нет - сам проверял и по урлу, который ты написал, из примеров видно.

27.9.2001 17:55  Slach  []

Это ... Дима...

Ты погорячился немного...

во-первых ищет оно СТРОГО по совпадению слова... по части слова не ищет...

Во-вторых, такой полезной штуки как индекс цитирования тоже нет.. .увы...

Вот ты бы лучше про UdmSearch рассказал... т.е. откуда что качать (и про win32 тоже)... и главное как ставить настраивать... компилить...

Ответ DL:

См. следующий материал. А до UdmSearch руки никак не дойдут :(

28.9.2001 15:04  Gray Angel  []

Я скачал файл pma.rar, архиватор отказался его открывать, сказал, что битый архив.

28.9.2001 16:40  Максим Деркачев  []

> 5. Нельзя поле relev использовать в клаузе WHERE:

Подозреваю, результата, подобного WHERE можно добиться используя HAVING - он накладывается уже на результирующий датасет, а не на саму таблицу, как делает WHERE.

Еще несколько замечаний.

1. FULLLTEXT SEARCH не ищет фрагменты слов - только целые слова. Т.е. AGAINST('Linux') выдаст все про Linux (вне зависимости от case), тогда как AGAINST('Linu') не вернет ничего про Linux.

2. FULLTEXT SEARCH ищет всё по "или", т.е. записи, в одной из которых есть "linux", а в другой - "RedHat", будут обе видны в результате запроса "Linux RedHat".

3. Конструкция MATCH .. AGAINST(...) направленная на поля в присоединенной (правой) таблицы при LEFT JOIN, вставленая в WHERE для ограничения выборки, не ограничивает эту выборку. Сумбур конечное, но попробую объяснить на простом примере.

Запрос:

SELECT a.id, b.txt FROM a LEFT JOIN b ON (a.id = b.id) WHERE MATCH b.text AGAINST('something')

Мы ожидаем, что в результат войдут поля из объединения, где поле txt содержит 'something'. На самом деле это не так. В результате будут все id из таблицы a, и что придется - из таблицы b - MATCH AGAINST в WHERE работает не так, как всё остальное.

Если же мы поменяем LEFT JOIN на RIGHT JOIN (сначала ограничим выборку по b, а потом прицепим то что следует из a), то всё заработает так как надо.

4. Что-то было еще, но вылетело из головы :)

Резюмирую: FULLTEXT - мощная штука, но очень специфическая. Посему, пользуйтесь, но don't cut off your eggs by an accident.

<


Содержание  Назад  Вперед