Search by WMSN

Затянуло меня на написание своей товарной «поисковой системы» ))) Вроде и быстро и релевантно. На реально гигантской базе планирую уложиться во время поиска 1 секунда (ну хули, я ж не гугл, чтоб за доли секунд искать).

Answers:

Ты охуенен! Я тебя уже хочу )))

Поделишься?

Ньюсмейкер, я еще ничего толком не сделал. Надо еще делать, тестить, еще тестить...

сколько записей в БД при таком результате?

Роман Питерский, нагрузочные тесты будут вечером или завтра. Жду слоновьих выгрузок, они что-то не делаются нифига.

Это будет дорвей или база с которой дорвей будет парсить контент? В такую базу можно же заливать теперь товары из любых партнерок?

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

webmaster, релевантность - поиск идет без учета падежа (окончания слов). Сортировка - чем больше слов из запроса нашлось, тем выше результат (если не удалять дубли слов на странице, то еще можно улучшить релевантность). В общем тут в некоторой степени похоже на match, только по новой переизобретно все ))) и нагрузка при поиске вроде меньше, чем при работе с MySQL.

Так ты переизобрел FTS3 и FTS4 ?

Эта штука в по учёному называется «поисковый индекс» + стеммер слов (обрезка суффиксов). Аналогично работает и сфинкс. Ревалентность запросов с такой системой иногда может ооочень страдать, хотя для доров не критично. Скорость - тут уже делится, между поиском в бд и пхп, 7-я версия будет кстати. Сфинкс просто более гибок в этом плане, хотя гемора с ним можно приобрести тоже достаточно

Atom, с них и начинал. Но один фиг нужна толковая подготовка текста, в итоге FTS3 и FTS4 не особо нужен, т.к. создать поисковую таблицу с индексом я и так могу, и своя таблица наглядее и понятнее, с ней потом больше вариантов «ранжирования». И кстати у меня скорость работы заметно выше чем у FTS3 и FTS4.

Как-то костыльно-велосипедно и потом все равно у тебя вылезут высокие нагрузки. Не, я всей душой за велосипеды, но не до такой же степени) Мускуль - самое хреное, чему можно доверить поиск ИМХО. А чем Сфинкс не устроил?

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

Gabriel, 1 сек мне норм. сейчас парсинг апи слона не вытягивает больше 2 одновременных запросов в секунду. Да и тупит часто. Сфинкс избыточен. В нем надо разбираться. Я за ночь основу своего движка сделал, и теперь мне в нем все понятно, легко будет дальше допиливать.

Mik Foxi, А если поэкспериментировать, и немного сегментировать базу, например по первым трем буквам. Индекс будет более уникальный, соответственно запрос будет побыстрее.

уПопаБылаСобака, так у меня сейчас в таблице сохранены слова с обрезанным окончанием. По ним и ищется, по столбцу индекс, в общем в этом плане уже никак не ускорить.

Mik Foxi, Ну не говори. Если разбить индекс по три буквы, то база сегментируется на 40000 частей. Т.е. столбец 1буква, вторая, третья, и уникальный индекс на все четыре столбца. Работать по логике должно гораздо быстрее. А если еще и слова хранить в виде хеша, то и вообще.

уПопаБылаСобака, я наверное не понимаю твоей идеи. ты предлагаешь искать стопицотраз, если у меня запрос будет из 5 словного ключевика с длинными словами?

Mik Foxi, Давай я протестирую у себя, а потом выложу результаты тестов.

Mik Foxi, я повторю - вначале я тоже городил свои велосипеды и думал что Сфинкс избыточен. Но жестокая реальность такова, что Сфинкс просто охуенен в своей скорости и не дает почти что ваще никакой нагрузки. Это просто сказка, и крайне сомнительно, что твои велосипеды покажут хотя бы приблизительно такой же результат. Вот и все)