Автор Тема: Поиск стал лучше  (Прочитано 2312 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн Green Kakadu

  • Координатор
  • Глобальный модератор
  • Ветеран
  • *****
  • Сообщений: 2757
  • +1/-0
  • 0
    • Просмотр профиля
    • http://gnezdo.webscript.ru
Поиск стал лучше
« : 06 Февраля 2002, 15:08:51 »
Со времен написания документации, где о поиске было сказано неоднозначно, кое-что изменилось: сейчас мы можем довольно отважно сообщить, что искать система Sanitarium WebloG   стала значительно лучше и если вам не жалко дискового пространства под поисковый индекс - включите поиск, вам же самим будет удобнее находить статьи по теме ;)  (документация писалась за полторы недели раньше публикации скрипта - поэтому такие неточности)


О поиске.
В документации это не отражено, а стоило бы: поиск рассчитан на страницы в кодировке windows-1251!
Если вы используете в своих статьях другую, то переведите все стоп-слова, окончания слов (массивы @word_ends, @stop_words - они приведены ниже) в свою кодировку и замените их в файлах admin.cgi и view.cgi

Как работает Поиск.
Наверное стоит немножко рассказать как он устроен.
Когда вы добавили в систему статью, то она еще недоступна при поиске, для того чтоб она находилась, необходимо  "Проиндексировать статью!" (вы так же можете удалить статью из индекса - в общем, 100% контроль). Что проиходит в процессе индексации?
Скрипт просматривает содержимое всей статьи, переводит все в нижний регистр,  удаляет все "небуквенные-нецифровые" символы, удаляет окончания слов, удаляет стоп-слова, "укорачивает" слова, подсчитывает частоту употребления слова на каждой странице, в поисковы индекс попадает:

слово: - страница статьи (id_page) на которой оно употребляется (частота употребления)

Когда посетитель вводит запрос - скрипт обрабатывает его запрос также как и текст (т.е. обрезает слова, удаляет бессмысленные слова, знаки) после чего проверяет, имеется ли это слово (слова) в индексе. Если да, то он выводит страницы которые соответствуют запросу. Причем вывод страниц сортируется - по частоте употребления слова на странице (если слов в запросе несколько, то вначале выводятся те страницы, где встречаются все эти слова, т.е. поиск как И, а потом где есть не все слова или одно из слов - поиск ИЛИ)

Сам поиск - довольно быстрая процедура, несколько сложнее - удаление статьи из индекса, переиндексация статьи.

Переиндексация статьи:
Как происходит удаление из индекса? Очень просто и тупо: просматривается весь поисковый индекс, и оттуда удаляются все упоминания о статье. Поэтому если вы редактируете страницу статьи, то наверху появляется возможность выбора: включить/отключить переиндексацию статьи. Когда ее включать, когда отключать? Если вы меняете текст статьи кардинальным образом, то стоит переиндексировать, если это незначительные поправки (пунктуация, html поправили, написали слово с ошибкой, а слово не самое смысловое), то переиндексировать не стоит - хотя дело ваше, просто зачем сервер перенапрягать?

Ключевые слова.
Когда вы вводите статью, то есть возможность написать ключевые слова - они никак не влияют на поиск, они просто не учитываются! Учитывается только заголовок (причем "вес" его слов увеличен) и само содержание статьи - все остальное просто не рассматривается. Поле "Ключевые слова" созданы исключительно для заполнении соотв. META- тега (т.е. для роботов поисковых машин).

При удалении статьи она автоматически удаляется из поисковго индекса.

*Примечание. В настоящее время мы думаем о возможности обработки и анализа страницы согласно законам Зипфа (Zipf), в результате чего надобность в массиве стоп-слов может отпасть.


Стоп слова и окончания (в кодировке windows-1251) файлы view.cgi и admin.cgi:
подпрограмма: sub index_text

@word_ends= qw/ies ила ыми ому или ить ему ого in gеть ала ими али ять ать \\-то ое ит ую ой ия ка ки ке ые ят оё ed ен ый ою ет от ьи ть его ом ам ым es ал ют ие ья ий ут ил им ин ь ю ая я ы а е и о ё s/;

@stop_words= qw/сейчас тепер друг нужн пот конечн поэт можн снов мог сам них тем там чем очен это что так когд кажд кто всег лишь был нет have by есл вас ваш вам даже над инач здес нескольк мо год not will you there and по\\-мо all вес with моч говор are бы would the наш один can any was скаж как сказ from или эта about котор буд that больш зна for which вон соб but тольк вот what one they this одн/;

*Примечание. Если вы используете системe для публикаций статей НЕ на русском языке (напр. украинском) то стоит добавить в стоп-слова и в окончания особенности соотв. языка!
« Последнее редактирование: 06 Февраля 2002, 17:12:28 от Green Kakadu »
 в исканиях.

 

Sitemap 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28