[image]

Мысли по полноценному поиску.

 
+
-
edit
 

Balancer

администратор
★★★★★
Просто мысли...

1. Готовые решения. MnogoSearch, к которому я попытался снова вернуться категорически не нравится тем, что не умеет индексировать в БД данные формата "несколько постингов на одну страницу с разбивкой на страницы". Т.е. как на этом форуме. Индексировать как обычный HTTP - это маразм.

2. Вчера полдня провозился в попытках поставить Sphinx. Но ничего не понял :D Т.е. поставил его, но как индексироват базы - просто не понял. Ещё буду разбираться.

3. Наконец, очередное изобретение велосипеда. Хотя, похоже, в области поисковиков это всё ещё акутально. Пару недель назад прикрутил и оттестировал на CMS русский стемминг - работает отлично. Заготовил огромные базы под поисковый индекс. Думаю, для начала попробовать перевести на свой движок в порядке эксперимента организацию "похожих" заголовков топиков. Нынешний вариант тормозит чудовищно. Для просмотра всех интересных комбинаций по нескольким десяткам тысяч записей уходят десятки секунд. Думаю, что в варианте с индексацией это время упадёт если не до десятых долей секунды, то хотя бы до единиц секунд :) Надо бы поднять тему движка поиска отдельно... А если эта система заработает, то и полнотекстовый поиск потом реализовать будет элементарно. Думаю, всей работы - на день-два... Найти бы их :D
   
+
-
edit
 

Balancer

администратор
★★★★★
Balancer> 2. Вчера полдня провозился в попытках поставить Sphinx.

Ссылка, если кому интересно - Sphinx | Open Source Search Server

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

Если кто поиском не занимался. Стемминг - это упрощённый алгоритм морфологической нормализации слов. Приводится не к морфологическому базису, а к некоторому усреднённому. Неправильно, зато быстро и бесплатно :) И в случае поисковых систем - неплохо заменяет истинную нормализацию.

В CMS можно посмотреть на include/classes/text/Stem_ru.php

Примеры преобразований:
code php
  1. <?
  2.     include_once("Stem_ru.php");
  3.  
  4.     $stemmer = new Lingua_Stem_Ru();
  5.  
  6.     $f = "Если кто поиском поисками не занимался
  7. занимается Стемминг это упрощённый алгоритм
  8. морфологической нормализации слов слова словам";
  9.  
  10.     foreach(split(' ', $f) as $w)
  11.         echo "$w -> ".$stemmer->stem_word($w)."\n";


Результат:
Если -> есл
кто -> кто
поиском -> поиск
поисками -> поиск
не -> не
занимался -> занима
занимается -> занимается
Стемминг -> стемминг
это -> это
упрощённый -> упрощен
алгоритм -> алгоритм
морфологической -> морфологической
нормализации -> нормализац
слов -> слов
слова -> слов
словам -> словам
 
   
RU Balancer #23.06.2016 11:34  @Balancer#14.11.2006 10:09
+
-
edit
 

Balancer

администратор
★★★★★
Balancer> 2. Вчера полдня провозился в попытках поставить Sphinx.

Нифига себе, оказывается, уже почти 10 лет прошло, как я на ShinxSearch перешёл :D

...

Сейчас возникла проблемка. Я отказался от хранения компилированных тел сообщений в БД, перейдя на их хранение на диске (сразу почти на 10Гб БД разгрузилась и, соответственно, минус таблица на 4 млн. записей). Но теперь просто так средствами SphinxSearch не пробежаться по БД и не проиндексировать компилированные сообщения. Исходники-то индексируются, так что по введённому тексту поиск работает как и прежде. А, скажем, когда нужно найти новость по слову из утянутого с сайта заголовку ссылки — фиг.

Решил сперва попробовать перейти на RT-индексы и запись в них данных по топикам вручную, т.е. скриптом. Всё, вроде, прекрасно, 3/4 базы проиндексировалось. И столкнулся с тормозами RT-индексов, блин. Наверное, кто-то уже заметил, как стал тормозить поиск по некоторым словам со вчерашнего или позавчерашнего дня. Всё же, нужно иметь обычный «большой» индекс + дельту изменений. Вот дельта вполне может быть RT, а не пополняться как сейчас раз в минуту.
   33

в начало страницы | новое
 
Поиск
Настройки
Твиттер сайта
Статистика
Рейтинг@Mail.ru