div.main {margin-left: 20pt; margin-right: 20pt}По следам поиска ещё раз
DL 28.09.2001
Комментарии к предыдущему материалу Олега Юсова.
Упражнения в
настройках и запросах.
Сначала как добавить
FULLTEXT-индекс:
mysql> alter table zametka add
fulltext(ztext); ERROR 1073: BLOB column 'ztext' can't be used in key
specification with the used table type
mysql> alter table zametka
type=myisam; Query OK, 36 rows affected (0.60 sec) Records: 36 Duplicates:
0 Warnings: 0
mysql> alter table zametka add fulltext(ztext); Query
OK, 36 rows affected (10.00 sec) Records: 36 Duplicates: 0 Warnings:
0
Текстовые индексы можно делать только в таблицах типа MyISAM. Тексты берутся
из таблицы и скидываются в файл индекса, и растёт объём базы.
По поводу
запросов. Нельзя поле relev использовать в клаузе
WHERE:
SELECT *, MATCH field AGAINST ('$searchwords') as relev
FROM table WHERE relev>0 ORDER BY relev DESC
хотя можно:
SELECT *, MATCH field AGAINST
('$searchwords') as relev FROM table WHERE MATCH field AGAINST
('$searchwords')>0 ORDER BY relev DESC
Вычисленное поле, конечно
же, нельзя использовать в WHERE по всем правилам синтаксиса, но можно
использовать в HAVING:
SELECT *, MATCH field AGAINST ('$searchwords') as relev FROM
table HAVING relev>0 ORDER BY relev DESC
Поиск через MATCH, как писал Олег, делается только по слову целиком.
...Впрочем, по релевантности можно только сортировать, а выбирать по LIKE (это,
конечно, скажется на производительности, даже не знаю,
насколько).
Убираем условие "relev>0", оставляем сортировку.
Остальное, как и раньше — рубим полученную строку и превращаем в запрос с
несколькими операторами LIKE:
SELECT *,MATCH field AGAINST
(&;#39;$searchwords') AS relev FROM table WHERE field LIKE '%$word1%' OR
field LIKE '%$word2%' ORDER BY relev DESC, datefield DESC
Логи, которые я теперь собираю по технологии, которую предложил RomikChef,
работают гораздо лучше. Скорость выборки на удивление осталась прежней, зато
объём файлов, в которых лежат таблицы, сократился в 10 раз.
Кому надо,
могут скачать файл с новым
анализатором статистики [1] (я описывал его в мае
[2]).
Если не лень будет, выложу скрипт для автоматической отправки по
почте логов с хостинга на дом, запакованных в формате GZip (Windows Commander
понимает). Для полной автоматизации можно будет сделать канал для WatzNew, и
логи будут идти сами, например, раз в неделю (получится письмо объёмом около 300
килобайт).
Найдено здесь
[3]:
mailto:serforester@peren.ru 23.08.2001 10:01 Дима, прости уж
мне мою банальность (хотя кто я такой, чёб меня прощать), но все эти разговоры о
Лебедеве ... Ну первооткрыватель, ну сделал кучу сайтов, есть у него чувство
формы, да и программульки писать могЁт. Ну и хватит :-) Просто когда
кого-то постоянно захваливают — хочется отойти подальше и не слышать этого.
И чёрт с ним, что не будешь понимать о чём потом будут разговоры — зато
хоть уважение и интерес к этой личности останется. Короче, это как с Сибирским
Цирюльником и его Мэйкером. Уважаю я Никиту Михалкова и поэтому не могу смотреть
на то, как он превращается в холёную "звезду". Кстати, "цирюльника" так и не
посмотрел — у Н.М. и так хватает интересных фильмов. Вообщем, поступило
типа предложение: все на http://detail.phpclub.net/ [6] [4] или http://tema.ru/ [7] [5] , а про автора ни-ни.
Пропадёт — будут о нём, как об арханизме Рунета
говорить.
mailto:nail@bowling.nsk.su 26.08.2001 16:43
2 serforester@peren.ru: Что-то вы напутали, Семен Семеныч. http://detail.phpclub.net/ [6] [4] и http://tema.ru/ [7] [5] — дело рук двух разных
людей — Дмитрия Лебедева и Артемия Лебедева
соответственно.
Оказывается, благодаря моим усилиям Артемий
"программульки писать могёт". Мне лестно.
Ссылки, использованные в выпуске:1)
/download/log_writer_n_analyzer.zip 2)
http://detail.phpclub.net/technique/01-05-17/ 3)
http://www.spectator.ru/comments/290 4) http://detail.phpclub.net 5)
http://tema.ru 6) http://detail.phpclub.net 7) http://tema.ru
Полная версия выпуска: http://detail.phpclub.net/news/01-09-28/
© Дмитрий Лебедев <dnl@au.ru> © Клуб
PHP-разработчиков <http://phpclub.net/>
|