Имя: Пароль:
 
LIFE
Жизнь форума
OFF: Улучшение поиска по форуму - сбор предложений
0 Волшебник
 
23.11.04
17:55
База форума разрослась и уже включает около 15 тыс. веток (почти 200 тыс. сообщений). Планируется увеличение базы еще как минимум на 50 тыс. веток за счет закачки архива Т1С. Поэтому на первый план выходит проблема поиска нужной информации в такой большой базе.

Есть следующие варианты:

1. Поставить на сайт Yandex.Server. Версия Standart стоит 330$. Есть Shareware-версия. Это позволит использовать мощный движок от Яндекса для поиска по базе.

Подробнее здесь: http://company.yandex.ru/technology/products/yandex-server.xml

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

----------
2. Доработка собственного поискового движка.

Сейчас поисковый движок очень простой. Он ищет почти точное соответствие слова в базе, используя возможности полнотекстового поиска MySQL (ключевое слово MATCH AGIANST). Результат сортируется по хронологии (по убыванию даты).

Хочется перейти к сортировке результата по релевантности, как это принято во всех поисковых системах.

Немного пофантазируем.
Поисковая форма будет принимать на вход следующие параметры:

Что ищем:
•    Слово или фраза

Где ищем:
•    Заголовок темы / текст сообщения / ник
•    Собственные ветки / Архив Т1С / все
•    База знаний
•    Рубрика (с учетом иерархии и без), несколько рубрик
•    V8 / кроме v8 / все
•    Раздел 1С / IT / LIFE
•    За период С __ По ___
•    Кол-во ответов от __ до __

Как ищем:
•    Союзы И, ИЛИ, НЕ (знаки: | & ^)
•    Точное соответствие (кавычки или флаг)
•    Поиск по связанным словам

Как показывать результат поиска:
•    Выдавать только заголовки тем
•    Табличный вид или плоский текст
•    Сколько сообщений на страницу
•    Сортировать по хронологии / по релевантности
•    Размер фрагмента сообщения

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

Релевантность страницы планируется рассчитывать по сложной формуле, учитывающей много параметров:

1. Частота поискового слова или его синонимов
2. Количество связанных релевантных слов (об этом ниже)
3. PageRank - ссылки на страницу с других страниц (индекс цитирования)
4. Слово в заголовке темы повышает релевантность сообщений внутри темы
5. Кол-во ссылок внутри страницы
6. Авторитетность участников (стаж, вес, вхождение в рейтинг)
7. Кол-во найденных сообщений и их релевантность внутри одной темы, по одному участнику, внутри рубрики, раздела
8. Размер сообщения, длина ветки
9. Более свежая ветка имеет больший приоритет
10. Слово внутри ссылки или рядом с ней имеет больший приоритет

----------------
Наверное, пояснение требуется для 3-го параметра "Количество связанных релевантных слов". Это технология, которую я пару лет назад предлагал Яндексу и Google, но которая пока нигде не применяется. Однако она может резко повысить релевантность результата.

Суть ее заключается в том, чтобы повышать релевантность тех страниц (сообщений), в которых, кроме искомого слова, встречаются слова, связанные с ним по смыслу или часто употребляемые вместе. Например, вместе со словом "пользователь" часто употребляются слова "логин", "права". Или вместе со словом "терминал" часто можно встретить "режим", "клиент", "citrix", "service". Этот список можно составить вручную или автоматически (с ручной корректировкой).
-------------------------------

Если у вас есть замечания или предложения по улучшению поиска на форуме, просьба их высказать.
1 Таня
 
23.11.04
18:00
У меня есть предложение, чтобы поиск совместить с полем "Тема, отражающая...", чтобы чел ввел тему, поставил галку типа "Поиск" и сначала перед тем как ее создать, чтобы ему выдавался список найденных тем.
2 Волшебник
 
23.11.04
18:02
(1) Прежде чем заставлять людей пользоваться поиском, нужно сделать его мощным и удобным. Сейчас он, прямо скажем, слишком простой и прямолинейный.
3 NiGMa
 
23.11.04
18:05
(2) Но все-таки работает! И, надо сказать, очень быстро!
А перебрать морфологические варианты слова... программист - сумеет, а не программист - так ему и надо! ;)

Короче. Я за СВОЙ движок поиска!
4 Таня
 
23.11.04
18:05
Ну так ты же уже все по-моему сам предложил в (0), а сделаешь ведь все равно только то что захочешь...
5 miki
 
23.11.04
18:05
На тебе не в тему:
Наколдуй, чтоб когда заходишь на http://www.forum.mista.ru, сразу активным было поле ввода логина. А то за мышью лезть приходится.
6 Волшебник
 
23.11.04
18:09
(3) Речь не только о морфологии, если ты заметил.

(4) Предлагай идеи и они будут реализованы. Как например, была реализована идея romix о переводе заглавной страницы на JavaScript и еще много других идей участников форума.

(5) Зарегистрируйся и форум будет тебя узнавать по кукам. Логин вводить вообще не надо будет.
7 bazvan
 
23.11.04
18:12
Таки КУКА нах из ряда браузеров посылает
8 Бивень
 
23.11.04
18:18
(6) Так это ромикс предложил? Понятненько.
Теперь, когда нашей проксе что-то не нравится на заглавной странице, она лочит мне всю заглавную страницу целиком.
Передай от меня ромиксу спасибо.
9 Бивень
 
23.11.04
18:21
(8)+ Верней не так, лочит она только то, что считает нужным. А не вижу я заглавную страницу не из-за прокси, а благодаря ромиксовым скриптам.
10 miki
 
23.11.04
18:49
(6)Неправда Ваша. То есть не вся. Так работает, если я просто браузёр закрываю, а если я перед закрытием браузёра делаю логаут, то при следующем заходе он меня уже не узнает.
11 Asmody
 
23.11.04
19:03
(6) кста, о жаба-скрипте, може хоть кнопычек в настройках сбацать - типа "Морда лица на жабе или как у нормальных людей"
12 Волшебник
 
23.11.04
19:23
(11) Подумаем. В свое время JavaScript был нужен, чтобы форум работал на медленном сервере и это действительно облегчило работу. Теперь сервер быстрый и мощности просто девать некуда, следовательно, есть возможность вернуться к чистому HTML.
13 romix
 
24.11.04
03:21
(8) Отключи JS (тут есть опция кажется).

(12) У многих людей траффик лимитирован, скажем, 50 мегов в месяц (особенно у некоторых моих знакомых франчей :-). У кого-то домовая сеть - траффик (достаточно дорогой) идет за деньги.

Кстати, длину страницы с JS можно резко увеличить (раза в 3), без заметного ее роста (3К -> 10К по любому будет грузиться за долю секунды).
14 romix
 
24.11.04
03:44
Насчет поиска - я бы предложил такой алгоритм (чтобы не слишком тратиться на Яндексы и прочее, но и не слишком долго его писать).

1) Морфологический анализ все русские поисковики - Яндекс, Рамблер и все прочие - делают по словарю Зализняка (был такой бумажный словарь - им пользовались, а может и сейчас пользуются для поиска рифмы к словам). Его отсканировали, и развернутая версия словаря доступна для скачивания.

Формат примерно такой:

абажур
абажура
абажуру
абажур
абажуром
абажуре
абажуры
абажуров
абажурам
абажуры
абажурами
абажурах

Верхнее слово - нормальная (базовая) словоформа. Весь словарь в таком виде занимает примерно 45 мегов (txt). В исходной электронной версии словаря были замечены ошибки (в бумажной версии - люди проверяли - все достаточно четко, видимо это ошибки перевода в электронную форму), и баксов за 25 можно найти дополненные и расширенные словари.

2) Я бы объединил поиск Яндекса (из него же можно черпать результаты запроса, сохраняя их баннер?) и "родной" поиск на форуме. Если убрать из "своего" поиска уже отсканированные роботом яндекса страницы, то он получится значительно быстрее.
15 romix
 
24.11.04
04:25
3) Поиск по нескольким словам примерно так:
- Запрос по первому слову - результат (список ID веток) пишем в файл 1
- Запрос по второму слову - результат (список ID веток) пишем в файл 2
- ...
- Объединение запросов - если, к примеру, на диске были сохранены 2 файла со списками ID веток, то надо найти пересечение множеств. Если списки отсортированы (например, в порядке возрастания ID), то сделать это будет наверное несложно. Алгоритм примерно такой:

ААА  ААА
БББ  ВВВ
ВВВ  ГГГ
ЖЖЖ ДДД

Первая запись - ААА - совпадает в обоих файлах. Берем ее.
Вторая запись не совпадает, поэтому в первом файле идем ниже (потому что там меньше), и опять сравниваем. И так выполняем сравнение до конца, и в итоге получаем пересечение множеств.
Для трех файлов - аналогично - надо только "спускаться на этаж вниз" в том файле, где значение минимально из всех трех. Для большего числа слов - абсолютно аналогично.

Вместо временных файлов можно пользоваться непосредственно результатами SQL-запроса (по точно такому же алгоритму).
16 Mnemonik
 
24.11.04
08:30
(14) Такой словарь зашит в форумах от группы phpbb - работает прекрасно - идея хорошая.
Теперь добавлю своих пару слов о поиске - не стоит считать что с поисковыми запросами справятся все пользователи форума, стоит продумать систему для упрошенного поиска и поиска по запросам. Не понимаю в (0) Авторитетность участников (стаж, вес, вхождение в рейтинг) - это как - типа он много пишет - его пост на первое место, а у того интересная тема - в ветке несколько сотен ответов - так он же пишет по три поста в неделю - на последнее место его... Чтоб не зазнавался. Идея с такой сортировкой - смахивает на шизофрению, Вам не кажется?
17 Волшебник
 
24.11.04
09:22
(16) Потому что ты довёл ее до абсурда. Любую идею можно довести до абсурда. Вхождение в рейтинг прибавит 0.1 балла к релевантности, только и всего. Кстати, длинные ветки влияют на рейтинг, если ты заметил.
18 romix
 
25.11.04
02:11
А что случилось с поиском - я хочу чтобы был не по релевантности, а по дате.
Или поиск по автору поста с сортировкой по дате.
19 romix
 
25.11.04
02:19
Кажется, до меня дошло, почему у (8) админ режет при помощи прокси JavaScript.

А они просто баннерки режут. JS - хороший способ защититься от баннерорезалок (ссылку на баннер можно сгенерить динамически, и резалка ее не распознает), поэтому режут и JS.

Соответственно, владельцы ресурсов, которые пойдут на поводу любителей резать баннеры, останутся не просто с носом, а с черным провалом на месте носа (с) Стивен Кинг.

Отрезание баннеров - имхо, пиратство, т.к. в книжном магазине тоже нельзя ценники и бирки, которые звенят на выходе, отрезать от книг или от журналов или от CD.
20 Витаэль
 
25.11.04
02:21
Может лучше кто-нибудь напишет форум?
21 Витаэль
 
25.11.04
02:22
+20. C восьмерочным или семерочным видом интерфейса (на выбор)
22 romix
 
25.11.04
04:01
А зачем форум писать, может лучше браузер (через TWebBrowser)?
Браузер должен посылать специальные запросы, в ответ на которые от сервера должны приходить только обновления страничек (если начало страничек уже лежит в кеше). Или такая технология в новых браузерах уже существует?
23 Витаэль
 
25.11.04
04:03
22. Новый интерфейс, новый ресурс, новая тематика, новая администрация, новые идеи, новые лица старых личностей.
24 Витаэль
 
25.11.04
04:04
+23. И зарплата модераторам и активным участникам.
25 romix
 
25.11.04
04:13
Это называется форкинг.
26 romix
 
25.11.04
04:15
+25 =от слова fork - вилка.
А зарплату тебе быстро уменьшат баннерорезатели со своими активными прокси.
27 Витаэль
 
25.11.04
04:19
26. Без банеров. Просто заложили в бюджете на IT.
Проблемы невозможно решaть нa том же уровне компетентности, нa котором они возникaют. Альберт Эйнштейн