Комментарии 59
Прикольно получается, когда переводят всё, включая опции:)
morphology = stem_ru
А английский вам не нужен?
morphology = stem_ru
А английский вам не нужен?
0
Хочу отдельно заметить что это статья — нечто вроде руководства по быстрому старту, т.е. куда что прописать чтобы сфинкс начал работать и что то искать. Тонкости настройки — тема для отдельной статьи.
Но вообще лично мне не нужна английская морфология, у меня база полностью на русском.
Но вообще лично мне не нужна английская морфология, у меня база полностью на русском.
+2
Вы уж извините :)
Цитата из статьи:
________________________
4. Поиск из php
Ну тут все просто. Проведем, например, поиск по запросу «Computer»
________________________
Цитата из статьи:
________________________
4. Поиск из php
Ну тут все просто. Проведем, например, поиск по запросу «Computer»
________________________
+3
Спасибо! Как-то безуспешно искал вменяемый материал на русском по сфинксу…
+1
И как у вас с буквой ё дела обстоят?
хинт www.sphinxsearch.com/forum/view.html?id=5401
хинт www.sphinxsearch.com/forum/view.html?id=5401
+6
А у меня следующий вопрос — как Sphinx берет данные для индексирования? Он с каким то интервалом проходит весь view catalog? Или может тригеры какие нибудь вешает в базу на изменения данных? view catalog в конечном счете может оказаться очень большим. И в каком режиме Sphinx читает view catalog — dirty read? Или он лочит все таблицы?
0
Это тема для отдельной статьи. Обычно держат два индекса: то что изменилось сегодня И всё остальное. Первый перестраивается раз в 5 минут и мёрджится со вторым раз в сутки.
0
добавлю, что смотерть в сторону дельта-индекса
0
уже есть Real-time index
0
RT это все таки изврат для избранных с небольшой базой. Ибо хранится в памяти.
0
Вы не правы, он частично в памяти:
==
RT индексы внутри состоят из фрагментов. Один фрагмент хранится в оперативной памяти, который хранит последние обновления. Когда размер фрагмента в RAM превышает лимит, он сбрасывается на диск, а оперативная память очищается
==
==
RT индексы внутри состоят из фрагментов. Один фрагмент хранится в оперативной памяти, который хранит последние обновления. Когда размер фрагмента в RAM превышает лимит, он сбрасывается на диск, а оперативная память очищается
==
0
Да, моя ошибка.
Но все таки это еще новая вещь с кучей ограничений. Если нет проблем с оперативкой — вполне можно взять обычный индекс, благо там многое кешируется. Хотя интересно было бы сравнить результаты на большой базе.
А если есть нехватка памяти, то брать RT имхо не стоит, учитывая заявленные ограничения. Всё таки бетка.
Но все таки это еще новая вещь с кучей ограничений. Если нет проблем с оперативкой — вполне можно взять обычный индекс, благо там многое кешируется. Хотя интересно было бы сравнить результаты на большой базе.
А если есть нехватка памяти, то брать RT имхо не стоит, учитывая заявленные ограничения. Всё таки бетка.
0
Вот вам и тестирование — pro100pro.com/testirovanie-proizvoditelnosti-obychnyx-real-time-i-smeshannyx-indeksov-sphinx-search
0
1) Зачем смешивать RT & обычные индексы? :) Распределенные вроде как нужны немножко для других целей — как правило для объединения нескольких индексов с разных машины.
2) Не указаны параметры индексов при тестировании. Обычный индекс можно загнать в ситуацию, когда он в памяти будет хранить минимум информации, а можно заставить хранить почти все. Разница в скорости и использовании винта будет на порядок.
Хотя результаты теста как раз и подтверждают мои слова чуть выше :)
RT — изврат для небольших баз. Хотя надеюсь в релизе оптимизируют.
2) Не указаны параметры индексов при тестировании. Обычный индекс можно загнать в ситуацию, когда он в памяти будет хранить минимум информации, а можно заставить хранить почти все. Разница в скорости и использовании винта будет на порядок.
Хотя результаты теста как раз и подтверждают мои слова чуть выше :)
RT — изврат для небольших баз. Хотя надеюсь в релизе оптимизируют.
0
Sphinx индексирует данные, когда вы запускаете indexer.
У нас он, например, запускается по крону в ночное время (основные индексы), и днём с часовым интервалов (дельта-индексы).
В любой момент через indexer --rotate-all можно обновить все данные.
У нас он, например, запускается по крону в ночное время (основные индексы), и днём с часовым интервалов (дельта-индексы).
В любой момент через indexer --rotate-all можно обновить все данные.
0
Для снижения нагрузки есть возможность настроить выборку интервалом:
WHERE ( id>=$start AND id записанного. дельта обновляется чаще.
два полученных индекса можно как мержить, так и оставить как есть (рекомендую второе. Сколько помню мерж — пару раз натыкался на глюки, на одной из версий помнится даже умирала база).
Отдельный геморой раньше был с удаленными записями. Но в последнем релизе придумали клевую фишку, и теперь как правило это делается просто и красиво
WHERE ( id>=$start AND id записанного. дельта обновляется чаще.
два полученных индекса можно как мержить, так и оставить как есть (рекомендую второе. Сколько помню мерж — пару раз натыкался на глюки, на одной из версий помнится даже умирала база).
Отдельный геморой раньше был с удаленными записями. Но в последнем релизе придумали клевую фишку, и теперь как правило это делается просто и красиво
0
Большую нагрузку создает Sphinx? Думаю его поставить на VDS
0
Да никакую нагрузку, только что в то время, как сканирует базу, но данную проблему легко решить, коннектясь к slave базе.
0
Да и индекс строится очень быстро… у меня пять миллионов записей меньше чем за 10 минут проиндексировал.
0
Именно поэтому и нужно на slave стучаться, у меня база мускульная гигабайта четыре, поиск идет очень быстро, но тоже не одну и не две минуты, зачем-же насиловать основную базу. Я отдельный slave держу для сфинкса и бэкапа, очень удобно :)
0
А это смотря сколько данных :)
В нашем случае полное индексирование проходит минут за 40, при этом на Sphinx выделено что-то около гигабайта памяти.
В нашем случае полное индексирование проходит минут за 40, при этом на Sphinx выделено что-то около гигабайта памяти.
0
А есть API для других ЯП? (желательно C#)
Может ссылку знаете?..
Может ссылку знаете?..
0
глупый вопрос, может кто ответ тут подскажет: есть папка с 10 Гб пдф документов (вперемешку с док и эксель файлами, но это не так важно) и есть относительно свободный сервер с линуксом.
как мне поставить\настроить поиск по этим документам? главная проблема: не могу сформулировать нужные запросы для гугла. куда копать, с чего начать?
как мне поставить\настроить поиск по этим документам? главная проблема: не могу сформулировать нужные запросы для гугла. куда копать, с чего начать?
0
Google Desktop:
desktop.google.com
desktop.google.com
+1
1) pdf2xml
2) xml -> sphinx
3) profit
2) xml -> sphinx
3) profit
0
Я для поиска по сайту использую DataparkSearch Engine
0
Ух ты… Похоже мощная штука. Я правильно понял что у него на выходе сразу HTML страничка и нету API?
0
А… так он чтоли сам сайт по http сканирует? Не базу?
0
Вы мне объясните soundex на сфинксе по русски работает?
0
Если вам для спеллчекера, то советую проверку по триграммам habrahabr.ru/blogs/sphinx/61807/ — работает прелестно плюс словарь строится на основе вашего же индекса
0
Мне нужно решить такую задачу.
Есть текстовый запрос с декстопной программы с самыми грубыми ошибками к БД.
Есть БД наиболее употребляемых слов русского языка (например, 100 тыс. слов).
Как получить из БД список слов максимально релевантных запросу?
Например, ввели «поардох» — получили «пароход, паровоз, порох»
Есть текстовый запрос с декстопной программы с самыми грубыми ошибками к БД.
Есть БД наиболее употребляемых слов русского языка (например, 100 тыс. слов).
Как получить из БД список слов максимально релевантных запросу?
Например, ввели «поардох» — получили «пароход, паровоз, порох»
0
Да, метод с триграммами с этим довольно хорошо справляется. Выдает список вариантов. В архиве с исходниками сфинкса есть пример php скрипта к той статье. Дополнительный плюс, что этот метод можно собственноручно «подтюнить» (см myrank из статьи).
По крайней мере я реализовывал спеллчекер для поискового индекса крупного интернет-магазина автозапчастей. В продакшн еще не выпустили но на тестах работает отлично.
А если у вас уже база слов а не текстов, то процесс еще упрощается т.к. триграммы можно генерировать сразу из базы слов а не indexer-ом.
По крайней мере я реализовывал спеллчекер для поискового индекса крупного интернет-магазина автозапчастей. В продакшн еще не выпустили но на тестах работает отлично.
А если у вас уже база слов а не текстов, то процесс еще упрощается т.к. триграммы можно генерировать сразу из базы слов а не indexer-ом.
0
Soundex, как алгоритм, применим только к английскому и родственным ему языкам.
На русском же выдает такое… ужасть просто.
На русском же выдает такое… ужасть просто.
0
После большой и страстной любви со сфинксом и его ранкерами в своем проекте решил избавиться от него как можно быстрее.
В итоге успешно перебрался на Solr, попутно получив фасетный поиск, подсветку результатов и real-time обновления для изменившихся данных в индексе.
Да, и еще он умеет кушать .doc, .pdf и т.п. вкусные файлы :)
В итоге успешно перебрался на Solr, попутно получив фасетный поиск, подсветку результатов и real-time обновления для изменившихся данных в индексе.
Да, и еще он умеет кушать .doc, .pdf и т.п. вкусные файлы :)
0
НЛО прилетело и опубликовало эту надпись здесь
Если я не ошибаюсь, достаточно подключить словарь словоформ
0
О, так она есть на русском! :)
А я ее читал на английском www.ibm.com/developerworks/library/os-php-sphinxsearch/
У нее есть минус что она написана для старой версии сфинкса и я когда пробовал брать из нее конфиги получал ошибки что, например, sql_group_column уже deprecated и нужно использовать другие параметры в конфиге
А я ее читал на английском www.ibm.com/developerworks/library/os-php-sphinxsearch/
У нее есть минус что она написана для старой версии сфинкса и я когда пробовал брать из нее конфиги получал ошибки что, например, sql_group_column уже deprecated и нужно использовать другие параметры в конфиге
0
Проблема с окончаниями решается как я понимаю подключением морфологии (morphology = stem_ru)
По крайней мере у меня по запросу «газонные решетки» находит товар «газонная решетка», по запросу «куплю газонную решетку» — тоже.
По крайней мере у меня по запросу «газонные решетки» находит товар «газонная решетка», по запросу «куплю газонную решетку» — тоже.
+1
Дада, именно стеммер en.wikipedia.org/wiki/Stemming для этого предназначен. В сфинксе есть встроенные для английского русского чешского и еще кучу можно подключить через стороннюю библиотеку: sphinxsearch.com/docs/current.html#conf-morphology
0
НЛО прилетело и опубликовало эту надпись здесь
НЛО прилетело и опубликовало эту надпись здесь
Стемминг предназначен не того, чтобы по запросу «собакой» в результат попали документы с другими словоформами: «собака», «собаки», «собаками» и т.д.
Для поиска по маске создана директива min_infix_len. И то и то вещи похожие но все же разные
Для поиска по маске создана директива min_infix_len. И то и то вещи похожие но все же разные
0
Смотрите в сторону min_infix_len — этот параметр как раз для ваших целей и предназначен
0
Спасибо большое за статью, пишите по сфинксу ещё :)
0
не за что:)
Пока особо нечего писать, добавил исправление ошибок в запросах с использованием триграмм и все работает :) т.к. поисковых запрсов на сайте немного (порядка 100 в день) то на доработку поиска пока не заморачиваемся, сконцентрировав внимание на более актуальных частях проекта.
Как только что — сразу напишу :)
Пока особо нечего писать, добавил исправление ошибок в запросах с использованием триграмм и все работает :) т.к. поисковых запрсов на сайте немного (порядка 100 в день) то на доработку поиска пока не заморачиваемся, сконцентрировав внимание на более актуальных частях проекта.
Как только что — сразу напишу :)
+1
Зарегистрируйтесь на Хабре, чтобы оставить комментарий
Создание ознакомительного поискового движка на Sphinx + php