Все потоки
Поиск
Написать публикацию
Обновить
1

Sphinx *

Система полнотекстового поиска

Сначала показывать
Порог рейтинга
Уровень сложности

Пример Sphinx поиска на реальном проекте — магазин автозапчастей Tecdoc

Время на прочтение9 мин
Количество просмотров98K
Вкратце: статья будет полезна тем программистам, кто уже заинтересовался релевантным поиском и прочитал статьи по стартовой установке сфинкс поиска, погонял на тестовых примерах и таких же синтетических задачах. Часто эти примеры не дают ответа на вопрос, а как же ощутить реальную пользу от поискового модуля Sphinx в сравнении с другими более простыми вариантами поиска. Примеры кода в статье — на php+smarty, Sphinx 2.0.1-beta, база данных — mysql, исходники и дамп структуры базы выложены отдельным архивом в подвале. В статье описан пример использования таких особенностей сфинкса, как:
  • Создание единого конфиг файла для windows development и linux production
  • SetMatchMode(SPH_MATCH_EXTENDED2) и почему SPH_MATCH_ANY и другие не подходят для реального поиска
  • SetSortMode(SPH_SORT_RELEVANCE), SetFieldWeights — сортировка по релевантности и установка весов для полей индекса
  • SetLimits(0,20) — ограничение вывода результатов
  • AddQuery, RunQueries — построение мультизапросов
  • SetFilter, ResetFilters — добавление фильтрации в мулльтизапросе для ограничения получаемых данных
  • Wordforms — использование синонимов и преодоление ограничений для нестандартных словоформ, как «C#»

Также хочется внести свой вклад в развитие проекта и откровенно недостаточной русской документации при том, что проект создан и поддерживается русскоязычным программистом. Поэтому решено: непрекращающийся поток блокер задач идет лесом, вместо него в качестве благодарности разработчикам сфинкса в общем и пользователю Андрей Аксёнов ака shodan я пишу эту статью.
Читать дальше →

Поиск по PDF, DOC, DOCX файлам с помощью Sphinx и PHP

Время на прочтение5 мин
Количество просмотров29K
Доброе время суток.

Хочу поделиться своим опытом написания скрипта на PHP для поиска по файлам форматов PDF, DOC и DOCX, используя Sphinx. Все ниже изложенное написано для людей, которые уже имели опыт работы с связкой Sphinx и PHP. Если нет, то в свое время мне очень помогла статья Мартина Стрейчера «Создание собственной поисковой системы с помощью PHP», опубликованная на сайте IBM.

Совсем недавно на одном из проектов, который является веб-интерфейсом для базы пользователей, я получил задание организовать поиск по документам. Проект был написан до меня и уже использовал Sphinx.

Задача вроде тривиальная, но погуглив немного, я не смог найти внятную инструкцию с конкретным примером поиска по файлам форматов PDF, DOC и DOCX, что и стало причиной написания этой статьи.
Читать дальше →

Мастер-класс в Киеве, 18 июня (сб)

Время на прочтение2 мин
Количество просмотров783
В следующую субботу, 18го июня, буду проводить в Киеве мастер-класс про Сфинкс, аналогичный проведенному на недавнем Devconf. Осталась неделя, самое время зарегистрироваться. Под катом пара-тройка ответов на стандартные вопросы.
Читать дальше →

Новости 2.0.1-beta

Время на прочтение9 мин
Количество просмотров3.2K

Как здесь уже заметили, недавно вышел Sphinx 2.0.1. Релиз случался в легкой спешке, тк. «совершенно неожиданно» (примерно как сессия или Новый год) еще вдобавок вышла книжка для начинающих, описывающая как раз новую версию. Книга «про транк» это таки слишком эксцентрично, поэтому пришлось оперативно публиковать версию. Хорошо, что мы месяц-другой именно к релизу и готовились: чинили баги, не сильно ломали фичи. В заметке расскажу про всякие нововведения в свежей версии 2.0.1 и планы на следующую версию, см. подкат.
Читать дальше →

Конференция пользователей Sphinx уже в это воскресенье

Время на прочтение1 мин
Количество просмотров788
Внезапно, до общего Московского сбора пользователей поискового движка Сфинкс осталось менее 3 суток. Программа докладов — sphinxsearch.com/conf2010ru.html, место проведения — МГУ, ВМК (2й уч. корпус), ауд. П-14, начало — 24 октября, 10:00 утра.

Только что разослал почтовые подтверждения всем зарегистрировавшимся; если вы ничего не получили, срочно напишите нам. Если еще не регистрировались, остался последний день (пятница) — но есть некоторая опасность, что сидячих мест уже может не хватить, приходите с походной пенкой или раскладными стульчиками ;)

Мы ждем всех!

Создание ознакомительного поискового движка на Sphinx + php

Время на прочтение5 мин
Количество просмотров105K

Предыстория


Раньше для поиска по сайту мы использовали обычный fulltext поиск. Но в определенный момент он перестал нас устраивать и мы решили опробовать альтернативную технологию поиска: Sphinx. К сожалению, у сфинкса совсем нет русской документации, поэтому эта статья — аналог статьи Build a custom search engine with PHP, только на русском языке и для моего локального окружения (windows 7, mysql/php)
Статья состоит из 4 частей:
  1. Краткий рассказ про подготовку базы для поиска.
  2. Рассказ про первоначальную установку и настройку сфинкса
  3. Индексирование базы и тестовый поиск из командной строки
  4. Тестовый поиск из php

Читать дальше →

вышел Sphinx 1.10-beta

Время на прочтение1 мин
Количество просмотров1.4K
Третьего дня выложил Sphinx 1.10-beta, с блекджеком и шлюхами RT индексами, строковыми атрибутами, оптимизированным форматом индекса, и традиционным десятком-другим фич поменьше. Вчера выложил к нему RPM вот еще.
Читать дальше →

Новости проекта Sphinx, весна 2010

Время на прочтение2 мин
Количество просмотров1K
Год 2010 получается довольно занятой в целом, весна случилась урожайная на конференции в частности. Поэтому писать в блог на Хабр регулярно получается плохо, но как минимум пачкой новостей и ссылок хочется поделиться (уже пора!). Краткая сводка —
  1. с начала года прошло 3 конференции (Confoo, MySQL UC, RIT++) с докладами про Сфинкс, доступны слайды;
  2. в течение месяца предстоит еще 2 (DORS/CLUC, DevConf), где запланированы доклады и (внимание, нечто новое) мастерклассы про все тот же Сфинкс;
  3. полтора месяца назад запустили (англоязычный) блог, пытаемся регулярно писать интересное туда, пока даже получается (сам очень удивляюсь);
  4. RT апдейты дозрели до публичного релиза настолько, что релиз задерживают не они; SVN версия местами крутится в продакшне, и даже почти что не падает (удивляюсь еще сильнее);
  5. самозародились плагины для WordPress, Zend Framework (не наши).
Подробности под катом!
Читать дальше →

Полноценный .NET клиент для Sphinx

Время на прочтение1 мин
Количество просмотров4.2K
Выложил как обещал .NET клиент для Sphinx. Текущая версия поддерживает только tcp/ip протокол (как самый полный из доступных).

Основные преимущества:


  • Полноценная реализация всех команд и типов атрибутов поддерживаемых сервером в 0.9.9-rc2
  • ADO.NET like API
  • Строго типизированный публичный интерфейс (т.е. никакой возни с конвертацией Unix timestamp в DateTime и т.д.)
  • Есть тестовый пример веб-интерфейса к Sphinx, с поддержкой пейджинга
  • Подпроект — GUI утилита для экспериментов над сервером и тюнинга настроек поиска


Проект находится в стадии release candidate. Самые востребованные фичи уже оттестированы и активно используются (напрямую связанные с поиском), но некоторые доп. классы еще не проверялись. Unit тесты тоже разработаны только для части классов. Функциональные тесты пока только в планах.

Планы на будущее:

  • Требуется переработка интерфейса тестовой утилиты, уж очень перегруженной она получилась. Возможно переход на MDI поможет его облегчить
  • Сделать документацию по интерфейсу, API довольно сильно отличается от «родных» клиентов
  • LINQ to Sphinx (очень дальние планы)


UPD: перенес в блог Sphinx (спасибо shodan за карму)

Progg it

Sphinx — не только для поиска!

Время на прочтение2 мин
Количество просмотров10K

Думаю, про такой замечательный поисковый движок Sphinx слышали все или почти все. Наверняка многие уже применяют его, для поиска по сайту, для выборки похожих статей, новостей, товаров и т.д. Он отлично справляется с поисковыми задачами даже на очень больших количествах записей. Но, в своей статье я хочу рассказать про использование Sphinx не для поиска.
Читать дальше →

Ищем втрое быстрее: мульти-запросы и фасеточный поиск

Время на прочтение5 мин
Количество просмотров13K
В сегодняшней статье расскажу про фичу Sphinx под названием мульти-запросы: встроенные в нее оптимизации, реализацию тн. фасеточного поиска, и вообще как иногда можно с ее помощью сделать поиск втрое быстрее.

Но сначала 15 секунд политинформации (сам себя не похвалишь, никто не похвалит). В этом году Sphinx прошел во второй тур конкурса Sourceforge Awards 2009 в номинациях SysAdmins и Enterprise (говорят, в номинации Developers не добрали совсем чуть-чуть). Голосование продлится еще неделю (до 20го числа). Кроме рабочего email адреса, ничего не нужно. Заранее спасибо всем, кто не даст нам пропасть!

И обратно к разработке. Что вообще такое мульти-запросы, и откуда берется обещанное втрое быстрее?
Читать дальше →

Как устроено ранжирование

Время на прочтение9 мин
Количество просмотров26K
Со временем Sphinx оброс большой кучей режимов поиска и ранжирования. Регулярно возникают вопросы про разное (от «как вытащить документ на 1е место» до «как рисовать от 1 до 5 звездочек в зависимости от степени совпадения»), которые на самом деле суть вопросы про внутреннее устройство тех режимов. В этом посте расскажу все, что вспомню: как устроены режимы поиска и режимы ранжирования, какие есть факторы ранжирования, как в точности рассчитываются факторы, как финальный вес, все такое. И, конечно, про звездочки!
Читать дальше →

Мне кажется, я начал понимать, что ты имела в виду!

Время на прочтение7 мин
Количество просмотров34K
Опечататься дело нехитрое; опечататься в поисковом запросе так и вдвойне. Почитай все большие веб-поисковики сегодня умеют корректировать ошибки в ключевых словах во-1х и подсказывать запросы во-2х; вслед за ними того же хочется поискам поменьше. Обе штуки можно ловко реализовать при помощи открытого поисковика по кличке Sphinx; в этом посте расскажу, как конкретно.

Ну, за did you mean («что ты имела в виду») и прочий query completion («уж не Васю ли ты ищешь»).
Читать дальше →

Ближайшие события

Как готовить SphinxQL

Время на прочтение6 мин
Количество просмотров46K
По заявкам трудящихся, расскажу про две новых мега-фичи в Sphinx. Предложения тем для последующих рассказов можно засылать в комментарии.

Обе фичи добавлены в версии 0.9.9-rc2, опубликованной в начале апреля 2009го. Версия традиционно (слишком) стабильная, известных серьезных багов нету, тесты проходятся, итп. Отважные люди, а также коммерческие клиенты с контрактами про поддержку, уже успешно используют в продакшне, несмотря на отличный от «release» тег.

1я мега-фича. Теперь Sphinx поддерживает сетевой протокол MySQL (внутренней версии номер 10, которую поддерживают все версии сервера и клиента, начиная с MySQL 4.1 и по MySQL 5.x включительно).

Читать дальше →

Sphinx и MSsql: проблемы… (fixed: уже нет проблем;-)

Время на прочтение2 мин
Количество просмотров2.9K
Вчера мы пытались настроить работу между Sphinx и MSsql, начали возникать непонятки)
Версия ПО: Sphinx 0.9.9-rc2
ОС: Windows 2003 Server Standard Edition x86 SP2
БД: MSSQL Server 2008 Enterprise x86 SP1
У используемой базы Collation — Cyrillic_General_CI_AS

С основными настройками и с запуском самого сервиса проблем не возникло.
Читать дальше →

Про что рассказать?

Время на прочтение1 мин
Количество просмотров2.9K
Смотрю, блог про Сфинкс почти мертвый.
Можно пробовать это исправить, и довести блог до состояния хотя бы полумертвого.

О чем интересно было бы почитать?
Туториалы для совсем начинающих не предлагать, не смогу.

Для затравки, и заодно в порядке спама.
Все уже знают, что свежий Сфинкс умеет прикидываться mysql сервером, и соотв-но никакой API не нужен?
Все уже знают, что запросы теперь можно писать в виде SELECT * FROM index WHERE MATCH('test')?
Все уже знают, как легко и непринуждено делать подсказки и-или автокоррекцию слов?
Все уже знают, что наконец появился открытый репозиторий для самых бесстрашных? :)

Организуем релевантный поиск по разнородным данным с помощью Sphinx

Время на прочтение10 мин
Количество просмотров22K
В одном из текущих проектов возникла задача поиска по данным разного типа, которая была успешно решена с помощью зарекомендовавшей себя поисковой машины Sphinx, но обо всем по порядку. 

Постановка задачи


В проекте есть на данный момент 2 зоны:
  1. географическая зона, реализованная на базе Google Maps, которая отображает нанесенные пользователями на карту географические объекты (маркеры, маршруты и области);
  2. информационная зона, которая представляет собой большой иерархически организованный каталог, содержащий информационные материалы.
Необходимо было решить задачу одновременного текстового поиска по 3-м типам объектов: географическим объектам, категориям информационной зоны и материалам информационной зоны — c возможностью фильтрации по дате публикации объектов и категориям, к которым они относятся.
Решаем задачу