Comments 110
Многие уже забыли что это такое, я думаю. А так — да, пишите, конечно, всегда интересно про поиск читать.
+2
Писать о чем конкретно? :)
Просто «про поиск» я написать не смогу!
Просто «про поиск» я написать не смогу!
0
Интересно, почему забыли?
0
Чисто субъективно Lucene как-то больше на слуху в последнее время.
0
На хабре что-то давно ни того, ни того не слышно. Да и приятно использовать то, что написано нашим человеком.
0
Почему?
Я как раз выбираю движок для полнотекста. И думал именно про Ssphinx. Почему мне стоит подумать о Lucene?
Я как раз выбираю движок для полнотекста. И думал именно про Ssphinx. Почему мне стоит подумать о Lucene?
0
У sphinx «монолитный» индекс
0
Эммм… Простите, в субботу сложные термины отказываются крутиться в моей голове :). Чем это хорошо/плохо?
0
Хорошо: очень быстрая индексация, более быстрый поиск[citation needed]
Плохо: нельзя динамически добавлять/удалять данные из индекса (читать: после каждого изменения базы, в теории, нужна полная переиндексация, но на практике небольшое отставание поисковой базы от MySQL почти всегда приемлемо).
Существует хак в виде инкрементального индекса. То есть фактически есть 2 индекса:
1) строится редко и по всей базе (i.e. раз в сутки)
2) строится часто по изменившейся части базы (i.e. раз в 5 минут)
Поиск, соответственно, происходит по обоим индексам одновременно.
Плохо: нельзя динамически добавлять/удалять данные из индекса (читать: после каждого изменения базы, в теории, нужна полная переиндексация, но на практике небольшое отставание поисковой базы от MySQL почти всегда приемлемо).
Существует хак в виде инкрементального индекса. То есть фактически есть 2 индекса:
1) строится редко и по всей базе (i.e. раз в сутки)
2) строится часто по изменившейся части базы (i.e. раз в 5 минут)
Поиск, соответственно, происходит по обоим индексам одновременно.
+1
На самом деле, кстати, у Lucene тоже.
Каждый ихний сегмент это примерно такой же нашенский монолит.
Lucene автоматом управляет сегментами, регулярно их мержит где-то унутре.
И вообще скрывает потроха от пользователя.
Sphinx наоборот.
Пока не скрывает ничего, а местами зря (менее удобно).
Каждый ихний сегмент это примерно такой же нашенский монолит.
Lucene автоматом управляет сегментами, регулярно их мержит где-то унутре.
И вообще скрывает потроха от пользователя.
Sphinx наоборот.
Пока не скрывает ничего, а местами зря (менее удобно).
0
Гм, а я увидев Sphinx подумал что речь идёт о sphinx.pocoo.org/ :)
-1
Все уже знают, как легко и непринуждено делать подсказки и-или автокоррекцию слов?
Не надо статьи, вы хотя бы намекните куда копать.
0
Автокоррекция слов? o_0 Было бы очень интересно почитать на эту тему!
+6
Ё! вы принесли самые лучшие новости за сегодня.
0
3 вопроса, без последнего :-)
вот их озвучивание было бы чудесным.
вот их озвучивание было бы чудесным.
+1
напишите ответы на вопросы которые Вы задаете в своем сообщении.
+2
+1. было бы здорово услышать ответы на них :)
+1
Ответы простые:
1. знают, но не все
2. нет, не все
3. не все
4. не все знают
Если серьёзно, то давно использую Sphinx — чрезвычайно хорошая вещь.
Почитать статьи на эту тему было бы интересно — вдруг чего упустил =)
1. знают, но не все
2. нет, не все
3. не все
4. не все знают
Если серьёзно, то давно использую Sphinx — чрезвычайно хорошая вещь.
Почитать статьи на эту тему было бы интересно — вдруг чего упустил =)
+8
интересует возможность задания списка синонимов? хотя бы однословных.
например, хочется, чтобы starcraft, старкрафт, старик — воспринимались как одно и то же. то есть на запрос со словом старкрафт находились документы со starcraft
на сколько я понял, в конфиге можно указать файл т.н. исключений, но вроде бы это не совсем то.
есть ли существующие средства для подобных вкусностей или нет? предвидятся? в какое место кода смотреть, чтобы (возможно) написать патч?
например, хочется, чтобы starcraft, старкрафт, старик — воспринимались как одно и то же. то есть на запрос со словом старкрафт находились документы со starcraft
на сколько я понял, в конфиге можно указать файл т.н. исключений, но вроде бы это не совсем то.
есть ли существующие средства для подобных вкусностей или нет? предвидятся? в какое место кода смотреть, чтобы (возможно) написать патч?
+2
Однословные есть примерно с год.
Многословные (N-to-1 точнее) умеет начиная с 0.9.9-rc1.
sphinxsearch.com/docs/current.html#conf-wordforms
Многословные (N-to-1 точнее) умеет начиная с 0.9.9-rc1.
sphinxsearch.com/docs/current.html#conf-wordforms
+3
Было б интересно прочитать про внутреннее устройство поиска, про использование тех или иных алгоритмов. Можно даже добавить каких-то «скучных» вещей про то как вообще нужно правильно обрабатывать большие массивы данных в памяти.
Про кластер тоже интересно почитать. Знаю что есть исходный код, но если уж сами предложили выбрать тему, то вот я предлагаю такие :-)
Про кластер тоже интересно почитать. Знаю что есть исходный код, но если уж сами предложили выбрать тему, то вот я предлагаю такие :-)
+4
Все ждут live updates :)
0
О, интересная тема, я бы с удовольствием последил бы «по шагам»: как установить, как установить морфологию, как скрестить например с php, как пользоваться, попробовать сделать поиск на своём сайте по базе…
+1
Неужели вам мана не хватает?
0
А поиском не пробовали пользоваться? Я про настройку писал топик.
0
Про «прикидываться MySQL» я бы почитал. Что это? Не backend к MySQL?
+3
скорее всего имеется ввиду Sphinx storage engine
0
неа, это Spinx 0.9.9 эмулирует MySQL-сервер (используя как бэкенд реальный MySQL-сервер).
Так запросы к сфинксу можно писать на диалекте SQL.
Так запросы к сфинксу можно писать на диалекте SQL.
0
нет :)
www.sphinxsearch.com/docs/manual-0.9.9.html#conf-listen | grep protocol
www.sphinxsearch.com/docs/manual-0.9.9.html#conf-listen | grep protocol
+1
0
Объясните подробно, и доступно, чем Sphinx отличается от «MySQL fulltext search» на примере БД (id, title, description) со 100,000 записей например. Интересно также узнать и о качестве поиска по фразам, в сравнении Sphinx и «MySQL fulltext search». Спасибо!
0
О первом вопросе можно узнать из любой презентации с тематических конференций(highload, mysql conf, высокие нагрузки).
0
Лично у меня Sphinx в разы быстрее ищет, чем MySQL fulltext search.
Один только недостаток — долго перестраиваются индексы, но это совсем-совсем не критично.
Один только недостаток — долго перестраиваются индексы, но это совсем-совсем не критично.
0
Ищет не просто в разы, а в сотни раз, если не в тысячи раз быстрее (чем больше база, тем существеннее разница).
Индексы перестраивает не так уж и долго — минуту, ну может несколько от силы на 100000 записей потратит (к тому же там есть возможность не перестраивать, а обновить индексы). В любом случае работа в это время не останавливается.
А вот если заставить mysql перестроить заново fulltext индекс, то это вешалка просто (иногда приходилось, если, например таблица поломалась и её надо починить) — при больших размерах часами может переиндексировать и на всё это время таблицу лочит (в отличие от сфинкса). И ещё очень важно fulltext — это только MyISAM, а со сфинксом можно переползти на INNODB, а там в разы лучшая надежность, масштабируемость и прочие плюшки.
Индексы перестраивает не так уж и долго — минуту, ну может несколько от силы на 100000 записей потратит (к тому же там есть возможность не перестраивать, а обновить индексы). В любом случае работа в это время не останавливается.
А вот если заставить mysql перестроить заново fulltext индекс, то это вешалка просто (иногда приходилось, если, например таблица поломалась и её надо починить) — при больших размерах часами может переиндексировать и на всё это время таблицу лочит (в отличие от сфинкса). И ещё очень важно fulltext — это только MyISAM, а со сфинксом можно переползти на INNODB, а там в разы лучшая надежность, масштабируемость и прочие плюшки.
0
Спасибо за Ваш развернутый комментарий. Эта информация очень мне нужна сейчас. Меня пугает сама установка «Сфинкс», его нужно собирать для установки, т.е. не все так просто… для меня по крайней мере. Нашел на одном из российских торрентов отличную книгу: «High Performance MySQL» так там очень хорошие примеры приведены про использование «Сфинкс» на высоконагруженных сервисах типа mininova.org и тд. Может кого-то заинтересует. Книга на анг. языке.
0
Пока надо, да.
Когда-нибудь сделаем бинарные пакеты, пока не сделали.
Но сборка из сорсов и установка делается одной шелл командой все равно.
./configure --prefix=/home/sphinx && make install
Когда-нибудь сделаем бинарные пакеты, пока не сделали.
Но сборка из сорсов и установка делается одной шелл командой все равно.
./configure --prefix=/home/sphinx && make install
0
ставится как-раз очень просто: для freebsd ставится из портов, для windows есть тоже собранный
0
У меня индексы из таблиц в MySQL (база весит около 10 Гб — много-много миллионов записей) перестраиваются примерно час.
Полнотекстовый поиск MySQL на объёмах на несколько порядков меньше (до перехода на Sphinx) просто вешался.
Ну и починка таблиц (пару раз было) — сами понимаете… Работа стоит, все ходят вокруг с недобрыми взглядами, а MySQL неспешно чинит табличку =)))
Полнотекстовый поиск MySQL на объёмах на несколько порядков меньше (до перехода на Sphinx) просто вешался.
Ну и починка таблиц (пару раз было) — сами понимаете… Работа стоит, все ходят вокруг с недобрыми взглядами, а MySQL неспешно чинит табличку =)))
0
О, я не знал, что умеет уже прикидываться SQL-сервером, надо почитать.
Сейчас как раз новый проект беру, sphinx хотят использовать.
Сейчас как раз новый проект беру, sphinx хотят использовать.
0
Вопрос: include в конфигах планируется когда-нибудь сделать?
Ситуация из жизни: два сайта, оба под свн, разворачиваются почти автоматически, а конфиг сфинкса все равно приходитсяне забывать править ручками. Очень неудобно, правда.
Ситуация из жизни: два сайта, оба под свн, разворачиваются почти автоматически, а конфиг сфинкса все равно приходится
0
Уже никогда не планируется.
Конфиги уже можно скриптить на пофиг чем.
#!/usr/bin/php в первую строчку, и оно заработает.
shebang syntax называется, говорят!
Конфиги уже можно скриптить на пофиг чем.
#!/usr/bin/php в первую строчку, и оно заработает.
shebang syntax называется, говорят!
+4
Вот блин: разочарован. Создал иссью в вашем трекере sphinxsearch.com/bugs/view.php?id=968
Насколько я понял — можно не надеяться и не ждать? Или надеяться все же можно? :)
Насколько я понял — можно не надеяться и не ждать? Или надеяться все же можно? :)
0
Вот вопрос.
Имеем индекс на 10 гигов. Строится он в течение 25 минут.
Время от времени база обновляется на 40-60% (за один раз).
Нужно переиндексировать.
Индексатор с запущенным одновременно поисковым демоном не пашет — демона нужно отключить и запускать переиндексацию.
Есть какие-то способы, чтобы не отключать демона и чтобы поиск все время работал?
По возможности, без параллельных индексов и подмены конфига.
Имеем индекс на 10 гигов. Строится он в течение 25 минут.
Время от времени база обновляется на 40-60% (за один раз).
Нужно переиндексировать.
Индексатор с запущенным одновременно поисковым демоном не пашет — демона нужно отключить и запускать переиндексацию.
Есть какие-то способы, чтобы не отключать демона и чтобы поиск все время работал?
По возможности, без параллельных индексов и подмены конфига.
0
indexer --rotate отлично пашет
0
как вариант — переиндексировать на другой машине. или можно делать на той же машине (если ресурсов хватает), но в другой файл индекса. потом копировать индекс в нужное место/перезапускать демона.
у меня вроде бы такая схема работает. не уверен, на сколько это грамотно с точки зрения философии сфинкса.
shodan?
у меня вроде бы такая схема работает. не уверен, на сколько это грамотно с точки зрения философии сфинкса.
shodan?
0
расскажи как прикрутить сфинкс к MSsql 2008 и сравнительный аналих по скорости ответа (сфинкс vs родной Mssql)
0
Прикрутить вроде просто.
type=mysql либо type=odbc в конфиге + правильный odbc_dsn + остальное «как для MySQL»
Анализ сам не могу.
Тк. не умею пользоваться MS SQL :)
type=mysql либо type=odbc в конфиге + правильный odbc_dsn + остальное «как для MySQL»
Анализ сам не могу.
Тк. не умею пользоваться MS SQL :)
0
Расскажите как поставить и проиндексить на существующих базах размеров в десятки гигов.
0
Нихрена я не знаю =)
Круто, давайте подробнее про все эти чудеса =)
Круто, давайте подробнее про все эти чудеса =)
0
Напишите про новый SetSelect
у меня так и не получилось использовать его в виде
SetSelect("*, @weight * ln(karma+2) as myweight");
А очень хочется. Проект уже работает.
у меня так и не получилось использовать его в виде
SetSelect("*, @weight * ln(karma+2) as myweight");
А очень хочется. Проект уже работает.
0
Лично мне было бы интересно узнать про взаимодействие с PostgreSQL и сравнение sphinx с tsearch2.
0
Взаимодействие с постгри — на уровне SQL. Модулем, как для мускуля, собираться не умеет. Для постгри я предпочитаю именно tsearch2 — поскольку он встроенный, то для извращенных или оптимизированных за счет структуры базы (при помощи наследуемых таблиц например) селектов не надо строить извращенный индекс. По производительности — детально и на одинаковых наборах данных не исследовал, но tsearch вроде быстрее.
-1
1. Понимает ли sphinx массивы в postgresql как sql_attr_multi или надо разворачивать их sql-запросом?
2. Хотелось бы мини-howto по SPH_MATCH_FULLSCAN.
2. Хотелось бы мини-howto по SPH_MATCH_FULLSCAN.
0
1. Можно ли как-то узнать сколько значений отброшено по каждому конкретному атрибуту? Сильно бы помогло при отладке.
2. Значения атрибутов не показываются в логе, приходилось вести свой лог поверх стандартного.
Последний раз делал поиск несколько месяцев назад, поэтому возможно уже не актуально.
2. Значения атрибутов не показываются в логе, приходилось вести свой лог поверх стандартного.
Последний раз делал поиск несколько месяцев назад, поэтому возможно уже не актуально.
0
Честно скажу:
пробовал я его поставить на windows, кажется получилося, а как поставить на VPS — совсем не знаю.
По мануалах ничего не понял. Личо я б с радостью почитал бы такую информацию.
пробовал я его поставить на windows, кажется получилося, а как поставить на VPS — совсем не знаю.
По мануалах ничего не понял. Личо я б с радостью почитал бы такую информацию.
0
В директории с исходниками:
CFLAGS=-O4 CXXFLAGS=-O4 ./configure --prefix=/дирректория/установки/сфинкса
make
make install
…
А далее идёте в каталог куда его ставили, в папку etc, там правите конфиг sphinx.conf, cd ../bin/ && ./indexer --all && ./searchd
Всё, Сфинкс запущен
CFLAGS=-O4 CXXFLAGS=-O4 ./configure --prefix=/дирректория/установки/сфинкса
make
make install
…
А далее идёте в каталог куда его ставили, в папку etc, там правите конфиг sphinx.conf, cd ../bin/ && ./indexer --all && ./searchd
Всё, Сфинкс запущен
0
shodan, расскажи про то как работает релевантность при выдаче.
Интерисует то, как правильнее вытащить запись «наверх» в поисковой выдаче.
Интерисует то, как правильнее вытащить запись «наверх» в поисковой выдаче.
+1
Я столкнулся с такой проблемой — есть несколько индексов с одинковой структурой аттрибутов, но пересекающимися идентификаторами. А искать нужно сразу в нескольких индексах, сфинкс же при совпадении айдишников из разных индексов оставляет только элемент из последнего указанного индекса — можно это как то обойти?
0
Мне кажется стоит пересмотреть структуру. Или сделать поиск по отдельным частям.
Если объединить индексы, то в выдаче sphinx'ом как вы будете различать какой id принадлежит к какой таблице?
Если объединить индексы, то в выдаче sphinx'ом как вы будете различать какой id принадлежит к какой таблице?
0
Сфинксу нельзя поступать иначе.
Иначе намертво отломятся дельты.
Обойти можно, сделав SELECT id*10+XXX,… в запросе sql_query.
Где XXX это внутренний для приложения номер индекса.
Иначе намертво отломятся дельты.
Обойти можно, сделав SELECT id*10+XXX,… в запросе sql_query.
Где XXX это внутренний для приложения номер индекса.
0
Все что перечислено в посте было бы интересно! Со своей стороны могу осветить некоторые вопросы интеграции с Ruby on Rails, если таких постов нет еще.
0
Было бы очень интересно почитать про автоподсказки и автоисправление слов.
0
подключайтесь к переводу мануала:
translated.by/you/sphinx-0-9-9-reference-manual/trans/
translated.by/you/sphinx-0-9-9-reference-manual/trans/
0
UFO just landed and posted this here
Было бы интересно почитать про реализацию «живого поиска» с помощью Sphinx для PHP. (оправданность использования Sphinx-а для решения данного вопроса, сравнения с скоростью MySQL и т.д.)
Заранее благодарен за статью.
Заранее благодарен за статью.
0
«Живой поиск» это что имеется в виду?
0
Работает примерно так: пользователь вводит несколько символов своего запроса и ему сразу предлагается несколько вариантов продолжения его запроса.
Например,
Например,
0
Ну те. в любую базу данных импортируем лог запросов, и затем
SELECT * FROM query_log WHERE current_query LIKE 'жив%' ORDER BY freq LIMIT 10?
SELECT * FROM query_log WHERE current_query LIKE 'жив%' ORDER BY freq LIMIT 10?
0
Хороший вариант, но подходит только для маленьких баз. MySQL LIKE будет медленно работать на больших базах (1 млн+ записей). Думаю, с помощью Sphinx можно сделать быстрее…
0
Нормально он будет работать, LIKE 'abc%' это довольно быстрая выборка по индексу.
0
Т.е. увеличение производительности за счет использования Sphinx вместо MySQL LIKE не будет?
0
Sign up to leave a comment.
Про что рассказать?