Sphinx - Форум успешных вебмастеров - GoFuckBiz.com - Страница 2
 
 
Форум успешных вебмастеров - GoFuckBiz.com

  Форум успешных вебмастеров - GoFuckBiz.com > Бизнес-решения > Скрипты, программы и технические решения
Дата
USD/RUB90.4082
BTC/USD69697.1242
Скрипты, программы и технические решения Обсуждаем скрипты, программы и новые технологии.

Закрытая тема
Опции темы Опции просмотра
Старый 08.07.2012, 01:35
Start Post: Sphinx 
  #11
sspy
главный злодей гофака
 
Аватар для sspy
 
Регистрация: 18.06.2007
Сообщений: 5,760
Бабло: $953838
По умолчанию

Кто-то настраивал поиск на Sphinx ? Особенно интересует примеры production системы. Накидайте мануалов толковых.
__________________
sspy вне форума  
Старый 21.07.2012, 01:22   #12
sspy
главный злодей гофака
 
Аватар для sspy
 
Регистрация: 18.06.2007
Сообщений: 5,760
Бабло: $953838
ТС -->
автор темы ТС По умолчанию

Цитата:
Сообщение от chesser Посмотреть сообщение
ps хотя наверно сфинкс настраивается легче, чем организовывать свой индекс
именно поэтому, плюс по скорости сфинкс рвёт всё
__________________
sspy вне форума  
Старый 21.07.2012, 02:50   #13
chesser
автоматизирую интернеты
 
Аватар для chesser
 
Регистрация: 05.07.2009
Адрес: chesser.ru
Сообщений: 3,362
Бабло: $470735
По умолчанию

Цитата:
Сообщение от sspy Посмотреть сообщение
плюс по скорости сфинкс рвёт всё
ну спорно же

http://en.wikipedia.org/wiki/Sphinx_%28search_engine%29 - вот тут пишут:
Цитата:
Searching speed of over 500 queries/sec against 1,000,000-document
тут измеряется скорость не понятно чего и наверняка с использованием дополнительного функционала аля морфологии и релевантности... Но при построении простейших индексов на основе mysql-memory можно добиться скоростей больших на несколько порядков. К примеру, даже без использования mysql_handlersocket выборка одного слова из индекса у меня работала со скоростью около 100000 операций/секунду. С использованием mysql_handlersocket будет быстрее раз в 5. По сути все упирается в скорость чипов памяти.

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

Поэтому я и спросил про задачу
__________________
USA и NL серверы и VPS | wiki | блог | Drupal | NginxТДС
Ave, Google, morituri te salutant! © chesser
chesser вне форума  
Старый 21.07.2012, 03:14   #14
sspy
главный злодей гофака
 
Аватар для sspy
 
Регистрация: 18.06.2007
Сообщений: 5,760
Бабло: $953838
ТС -->
автор темы ТС По умолчанию

Цитата:
Сообщение от chesser Посмотреть сообщение
тут измеряется скорость не понятно чего и наверняка с использованием дополнительного функционала аля морфологии и релевантности... Но при построении простейших индексов на основе mysql-memory можно добиться скоростей больших на несколько порядков. К примеру, даже без использования mysql_handlersocket выборка одного слова из индекса у меня работала со скоростью около 100000 операций/секунду. С использованием mysql_handlersocket будет быстрее раз в 5. По сути все упирается в скорость чипов памяти.

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

Поэтому я и спросил про задачу
у меня одна таблица в несколько десятков лямов с 5 полями varchar для поиска и несколькими enum по которым делается сортировка. управление релевантностью играет не последнюю роль, а в этом сфинкс очень даже преуспевает.

Почитал я про mysql_handlersocket и memory таблицы, в принципе толково, но готового мануала нет, а разбираться с нуля лень.

mysql-memory индексы сколько памяти кушают ? у сфинкса с этим всё четко
__________________
sspy вне форума  
Старый 21.07.2012, 03:34   #15
chesser
автоматизирую интернеты
 
Аватар для chesser
 
Регистрация: 05.07.2009
Адрес: chesser.ru
Сообщений: 3,362
Бабло: $470735
По умолчанию

Цитата:
Сообщение от sspy Посмотреть сообщение
mysql-memory индексы сколько памяти кушают ? у сфинкса с этим всё четко
там тоже все четко
сколько памяти надо, столько и скушают. Индексы разные, хеш-индексы больше места займут, b-tree меньше. Но хеш индексы быстрее, хотя и не умеют сортировать и применять другие операции, работающие с положением строк относительно друг друга.

если в varchar хранится логическая единица поиска (наверно "терм"), то я бы сделал справочник(таблицу) всех термов вида: (hash, term) и после этого твою искомую таблицу надо перекроить в (hash1, hash2, hash3, hash4, hash5, enum1, enum2....). В зависимости от чувствительности к коллизиям можно подобрать нужную хеширующую функцию. Мне обычно хватает crc32. Таким образом у тебя получается таблица из 5-ти crc32 и enum полей. 5*crc32 = 20 байт + енумы.

Пусть даже одна строка займет 50 байт, при выделении mysql-memory памяти 2 гига в такую таблицу влезет 2Г/50 = 40 миллионов строк. Надо больше - докинуть памяти. А дальше скорость выборок зависит от скорости памяти. Ну еще этот индекс нужно поддерживать в актуальном состоянии - тоже временные издержки.

В случае использования mysql_handlersocket мы убираем SQL прослойку и работаем с памятью через API, т.е. почти напрямую. А там скорости высокие...ну примерно скорость выборки по id 300-1000тыщ операций в секунду в зависимости от памяти.

UPD: поисковые процессы можно запускать в несколько процессов, обычно 1 ядро проца = 1 процесс. Я для себя делал map-reduce, т.е. распаралеливал свои задачи на несколько процессов и потом результат объединял - так скорость вырастает еще в несколько раз.
__________________
USA и NL серверы и VPS | wiki | блог | Drupal | NginxТДС
Ave, Google, morituri te salutant! © chesser
chesser вне форума  
Старый 21.07.2012, 20:56   #16
Gyrus
Member
 
Регистрация: 16.01.2008
Сообщений: 86
Бабло: $11570
По умолчанию

Только, все равно не понятно, зачем изобретать свой велосипед. Хотя, конечно, если цель - изобрести велосипед - то да, можно заморачиваться. А иначе - зачем?
Скорость поиска с учетом морфологии и без - практически не меняется, у сфинкса. Меняется только скорость полной индексации, которую можно делать хоть раз в месяц, и обходиться дельта индексами и обьединением индексов.

Про процессы.. У сфинкса - необходимое условие - разные индексы. Т.е. имея 2 индекса (основной и дельта) - можно делать паралельный поиск, используя два ядра. И т.д. Настраивается - парой строк в конфиге..

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

PS. А вообще, можно на чистом асме написать свой веб сервер, простейший, который будет в 100 раз быстрее того же nginx, и в разы меньше жрать памяти. Но есть ли в этом смысл?
Gyrus вне форума  
Старый 21.07.2012, 21:13   #17
Gyrus
Member
 
Регистрация: 16.01.2008
Сообщений: 86
Бабло: $11570
По умолчанию

А вообще, судя по всему, связка sphinx + handlersocket должна дать очень очень хорошие результаты.
Gyrus вне форума  
Старый 22.07.2012, 08:06   #18
chesser
автоматизирую интернеты
 
Аватар для chesser
 
Регистрация: 05.07.2009
Адрес: chesser.ru
Сообщений: 3,362
Бабло: $470735
По умолчанию

Цитата:
Сообщение от Gyrus Посмотреть сообщение
Только, все равно не понятно, зачем изобретать свой велосипед. Хотя, конечно, если цель - изобрести велосипед - то да, можно заморачиваться. А иначе - зачем?
я учил ИНС и в этом процессе был подпроцесс четкого поиска без морфологии.
До изобретения велосипеда скорость обучения была от месяца, после велосипеда - несколько часов. Плюс такие скорости позволили быстрее отлаживать алгоритм обучения и выявлять баги в бизнес логике софта. Ну и сам объем обрабатываемых данных увеличился.

Был вариант работать непосредственно с памятью, без mysql, например на c/c++, но разница в скоростях была бы меньше одного порядка..скорее всего 2-3 раза за минусом всех фич и удобств mysql. В общем, считаю mysql-memory довольно быстрым и удобным компонентом для обработки данных. А использование mysql-handlersocket - ну это как бы не принципиально, я бы сначала без него все сделал, а потом на него перешел.

Выбирая поисковую систему сегодня, я бы выбрал продукты Apache Foundation - наверно Lucene
__________________
USA и NL серверы и VPS | wiki | блог | Drupal | NginxТДС
Ave, Google, morituri te salutant! © chesser
chesser вне форума  
Старый 29.10.2012, 19:00   #19
sspy
главный злодей гофака
 
Аватар для sspy
 
Регистрация: 18.06.2007
Сообщений: 5,760
Бабло: $953838
ТС -->
автор темы ТС По умолчанию

у кого-то есть готовый конгфиг по main + delta с обновлением по времени изменения, а не id ?
__________________
sspy вне форума