Sphinx. Установка и первичная настройка

Итак, начинаю серию топиков по прикручиванию поисковой машины Sphinx к нашему любимому движку.

0 Что есть Sphinx и с чем его едят


Сфинкс является системой полнотекствого поиска, распространяемой под лицензией GPL второй версии.

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

1 Установка


    Топаем по ссылке и скачиваем себе файл с исходниками последней версии Sphinx-а. Актуальной, на данный момент, является версия 0.9.8.1, взять которую можно здесь.
    Распаковываем архив стандартной командой (
tar zxf /path/to/SphinxSourceFile.tar.gz
), переходим в новый каталог sphinx и выполняем «волшебную последовательность» (
./configure; make; make install
).
    Для успешной сборки Сфинкса в системе должны быть установлены и доступны текущему пользователю:
* компилятор С++ (вполне подойдет стандартный из коллекции компиляторов GNU)
* программа make, например, из набора GNU
    
    Если есть необходимость указать какие-нибудь опции компиляции, например, путь до библиотеки MySQL или пути для установки, то передаем их конфигурационному скрипту. Префикс «по-умолчанию» зависит от вашей системе (в *BSD — /usr/local..., а в разных Linux-ах по разному, но велика вероятность, что конфиги лягут в /etc/sphinx, а бинарники в /usr/local/bin). Для простоты дальнейшего повествования, предположим, что конфиги у вас будут лежать в каталоге /usr/local/sphinx/etc, а бинарники в /usr/local/sphinx/bin.
    На этом этап установки завершен.

2 Настройка


    Для начала стоит сказать, что конфигурация поисковой машины Сфинкс оперирует двумя фундаментальными параметрами:
 * Источник (source) — описание объектов индексируемых данных, параметры доступа к ним и указание поисковой машине аттрибутов данных, их типов и правил их анализа.
 * Индекс (index) — хранилище индекса данных, описанных в источнике (да, тавтология :) ). В качестве данных, хранимых в индексе, указывается ранее описанный источник.

Исходя из написанного выше, для настройки Сфинкса на индексацию базы данных Живой Улицы, нам необходимо описать источники и индексы. В данном топике будет приведен пример конфигурационного файла с индексами комментариев и топиков. Расширенную настройку каждый сможет провести самостоятельно, в зависимости от требований проекта.
Со сфинксом поставляется конфигурационный файл по-умолчанию, однако он нам не пригодиться. При первичной настройке Вы можете воспользоваться моим, который приведен ниже. Однако учтите, что в нем необходимо прописать параметры доступа к базе данных и пути до каталогов, в которых будут храниться индексы.

Настройка автозапуска поискового демона при старте системы


Для осуществления того, что написано в заголовке раздела, необходимо в один из стартовых скриптов системы, например, /etc/rc.local для ОС Linux вставить код:
# Запускаем демона Сфинкс
/usr/local/sphinx/bin/searchd --config /usr/local/sphinx/etc/sphinx.conf


Настройка периодической индексации базы данных


Самый простой способ запустить индексацию — это выполнить или добавить в планировщик команду
/usr/local/sphinx/bin/indexer --all
, однако данный способ является сильно неоптимальным, поскольку топики обновляются (точнее появляются новые) значительно реже, нежели комментарии, поэтому частоту обновления индекса комментариев должны быть больше.

Для различной частоты индексации объектов разного типа, в планировщик необходимо добавить следующие инстукции:
12 */3 * * *  /usr/local/sphinx/bin/indexer --rotate topicsIndex > /dev/null 2>&1
*/50 * * * *  /usr/local/sphinx/bin/indexer --rotate commentsIndex > /dev/null 2>&1

(означает индексацию топиков каждые 3 часа с запуском процесса на 12ой минуте часа и индексацию комментариев каждые 50 минут)

3 Пример конфигурационного файла



## Конфигурационный файл Sphinx-а для индексации Живой улицы

#######################
#
# Описываем индексы
#
#######################

# Источник-родитель для всех остальных источников. Здесь указываются параметры доступа 
# к базе данных сайта
source lsParentSource
{
	type		= mysql
	sql_host	= your_database_host
	sql_user	= your_database_login
	sql_pass	= your_database_password
	sql_db		= your_database_name
	sql_port	= 3306
    	# Для ускорения работы прописываем путь до MySQL-го UNIX-сокета (чтобы 
	# операции с БД происходили не через TCP/IP стек сервера)
    	sql_sock	= /var/run/mysqld/mysqld.sock
    
    	
	mysql_connect_flags	= 32 # 32- включение сжатие при обмене данными с БД
    
	# Включам нужную кодировку соединения и выключаем кеш запросов
	sql_query_pre			= SET NAMES utf8
    	sql_query_pre			= SET SESSION query_cache_type=OFF    
}

# Источник топиков
source topicsSource : lsParentSource
{
	# запрос на получения данных топиков
	sql_query		= \
		SELECT t_fast.topic_id, t_fast.topic_title, UNIX_TIMESTAMP(t_fast.topic_date_add) as topic_date_add, \
		tc.topic_text, t_fast.topic_publish \
		FROM prefix_topic as t_fast, prefix_topic_content AS tc \
		WHERE t_fast.topic_id=tc.topic_id AND t_fast.topic_id>=$start AND t_fast.topic_id<=$end

	# запрос для дробления получения топиков на неколько итераций
	sql_query_range		= SELECT MIN(topic_id),MAX(topic_id) FROM prefix_topic
	
	# сколько получать объектов за итерацию
	sql_range_step		= 1000

	
	# Указываем булевый атрибут критерия "топик опубликован". Для возможности указания этого критерия при поиске
	sql_attr_bool		= topic_publish

	# Атрибут даты добавления, типа "время"
	sql_attr_timestamp	= topic_date_add

	# мульти-аттрибут "теги топика"
	sql_attr_multi	= uint tag from query; SELECT topic_id, topic_tag_id FROM prefix_topic_tag

	sql_ranged_throttle	= 0
}

# Источник комментариев
source commentsSource : lsParentSource
{
	sql_query		= \
			SELECT comment_id, comment_text, UNIX_TIMESTAMP(comment_date) as comment_date, comment_delete \
			FROM prefix_topic_comment \
			WHERE comment_id>=$start AND comment_id<=$end

	sql_query_range		= SELECT MIN(comment_id),MAX(comment_id) FROM prefix_topic_comment
	sql_range_step		= 5000

	sql_attr_bool		= comment_delete
	sql_attr_timestamp	= comment_date
}

#######################
#
# Описываем индексы
#
#######################

index topicsIndex
{
	# Источник, который будет хранить данный индекса
	source			= topicsSource
	path			= ПУТЬ/ДО/КАТАЛОГА/ИНДЕСА

	# Тип хранения аттрибутов
	docinfo			= extern

	mlock			= 0

	# Используемые морфологические движки
	morphology		= stem_enru, soundex, metaphone

	# Кодировака данных из источника	
	charset_type		= utf-8


	# Из данных источника HTML-код нужно вырезать
	html_strip				= 1
}

# Индекс комментариев
index commentsIndex
{
	source			= commentsSource
	path			= ПУТЬ/ДО/КАТАЛОГА/ИНДЕСА

	docinfo			= extern

	mlock			= 0

	morphology		= stem_enru, soundex, metaphone

	charset_type		= utf-8
}

#######################
#
# Настройки индексатора
#
#######################


indexer
{
	# Лимит памяти, который может использавать демон-индексатор
	mem_limit			= 32M
}

#######################
#
# Настройка демона-поисковика
#
#######################

searchd
{
	# Адрес, на котором будет прослушиваться порт
	address				= 127.0.0.1


	# Ну и собственно номер порта демона searchd
	port				= 3312

	# Лог-файл демона
	log					= /var/log/sphinx/searchd.log

	# Лог поисковых запросов. Если закомментировать,то логировать поисковые строки не будет
	query_log			= /var/log/sphinx/query.log

	# Время в секундах, которое ждет демон при обмене данными с клиентом. По исчерпании происходит разрыв коннекта
	read_timeout		= 5

	# Максимальное количество одновременно-обрабатываемых запросов. 0 означает дофига, а точнее без ограничения
	max_children		= 30

	# Файл, в который сохраняется PID-процесса при запуске
	pid_file			= /var/log/sphinx/searchd.pid
}
	

215 комментариев

avatar
хоть так делать не хорошо, но всетаки подниму топик в Эфир
avatar
:-)
avatar
И, конечно же, стоит добавить, что для успешной сборки должны быть установлены хидэры майсиквела (пакет libmysql-dev или чтонибудь вроде того)
avatar
Ооооооооо, пасиба!:)
avatar
добавил в топик разделы про запуск процесса индексации и поискового демона.
avatar
а сколько примерно строится индекс, скажем для 1000 топиков
есть какая-нибуть статистика применимо к лайвстриту?
avatar
ну когда я тестировал свой модуль (который еще не до конца готов) — 6200 топиков+27000 комментариев. размер базы в бинарном виде около 150мб, сфинкс полностью обходил описанные источники за 27 секунд — порядка 10 секунд на все топики и около 17-18 на комментарии (видимо из-за большого их количества — количество запросов получается больше, записей в индексный файл больше и тп).
avatar

это я делал на старом сервере, недавно сильно обновил сервер (память в 4 раза увеличил) и проц сильно шустрее.
Результаты:
server:~# indexer --rotate topicsIndex
Sphinx 0.9.8-release (r1371)
Copyright © 2001-2008, Andrew Aksyonoff

using config file '/usr/local/etc/sphinx.conf'...
indexing index 'topicsIndex'...
collected 4951 docs, 20.4 MB
collected 3165 attr values
sorted 0.0 Mvalues, 100.0% done
sorted 1.6 Mhits, 100.0% done
total 4951 docs, 20369103 bytes
total 14.478 sec, 1406895.17 bytes/sec, 341.97 docs/sec
rotating indices: succesfully sent SIGHUP to searchd (pid=3446).
server:~# indexer --rotate commentsIndex
Sphinx 0.9.8-release (r1371)
Copyright © 2001-2008, Andrew Aksyonoff

using config file '/usr/local/etc/sphinx.conf'...
indexing index 'commentsIndex'...
collected 27546 docs, 6.1 MB
sorted 0.6 Mhits, 100.0% done
total 27546 docs, 6115398 bytes
total 4.352 sec, 1405054.70 bytes/sec, 6328.88 docs/sec
rotating indices: succesfully sent SIGHUP to searchd (pid=3446).
 
опция rotate указана для того, чтобы после переиндексации индексер послал поисковому демону сигнал на релоад индесных файлов.

Тут надо учитывать, что у меня (как и по-умолчанию) включена полная переиндексация каждый раз. Если настраивать дельта-индексы (только добавленные в базу записи), то будет знаааачительно быстрее.
avatar
ооо, спасибо
т.е. можно и чаще индексировать, раз все так быстро происходит
avatar
Добавьте хотя бы пару предложений о Sphinx'се, это будет только плюс статье.
  • ant
  • 0
avatar
Добавьте хотя бы пару предложений о Sphinx'се, в смысле описание. это будет только плюс статье
  • ant
  • 0
avatar
добавил маааленький кусочек эбаута в начало. перевод вольный :)
avatar
Собственно о таком я и говорил. Спасибо.
avatar
а живой пример уже есть? в студию пожалуйста, полюбоваться. ;)
avatar
хорошее начало, ждём продолжения :)
топик перенес с техдок
  • ort
  • 0
avatar
Макс, прикручивай! ;)
avatar
А как теперь производить поиск-то? Создаются индексные таблицы? Или как?
avatar
если оооочень внимательно взглянуть на заголовок, то можно понять что это первая часть статей про прикручивание сфинкса к ЖУ ;)
avatar
:) после слова sphinx зрачки расширяются и с непреодолимой скоростью начинают бегать по телу топика:)
В общем ясно, там свой апи:)
avatar
ага
попросил вчера кое-что добавить в ядро ЖУ. если добавит. то выложу модуль очень быстро
avatar
ОРТа
avatar
ждем:)
avatar
итак, великодушный ОРТ откликнулся на мою просьбу и добавил необходимый функционал в эмбедед-модули ЖУ (сий функционал приехал в последнем коммите (№82) в транк). Всеобщее счастье близко как никогда:-)
avatar
Cпасибо
avatar

Вопрос, что такое индексные файлы, и с чем их едят?

WARNING: index 'topicsIndex': preload: /home/webmaster/sphinx/index.sph is invalid header file (too old index version?); NOT SERVING
WARNING: index 'commentsIndex': preload: /home/webmaster/sphinx/index.sph is invalid header file (too old index version?); NOT SERVING
FATAL: no valid indexes to serve
 
avatar

для создания индексов нужно запустить: indexer --all
avatar
можно немного по подробнее о:
# Источник, который будет хранить данный индекса
source = topicsSource
path = ПУТЬ/ДО/КАТАЛОГА/ИНДЕСА
и

# Индекс комментариев
index commentsIndex
{
source = commentsSource
path = ПУТЬ/ДО/КАТАЛОГА/ИНДЕСА

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

Самый простой способ запустить индексацию — это выполнить или добавить в планировщик команду
/usr/local/sphinx/bin/indexer --all

как автоматизировать в windows данный процесс?
avatar
сам не использовал, но пишут что nnCron (виндовая программа) — достаточно мощный планировщик, в него можно и засунуть вызов индексатора.

только в случае, если в момент индексации поисковый демон работает необходимо стартовать индексатор с параметром --rotate (чтобы индексер уведомил демона об обновлении индексов)

Также, запуск переиндексации всех индексов не оптимален, лучше запускать индексацию комментариев и постов в разное время с различными временными интервалами
avatar
аааа, вот оно что — спасибо, буду дальше тестировать
avatar
в принципе разобралась как установить и таки установила! осталась 1 проблема.
1. при поступлении нового контента его сразу не индексирует, т.е. как в windows автоматизировать данный процесс. X:\sphinx\bin\indexer.exe --all

2. для windows индексации мало, нужен еще перезапуск поискового демона X:\sphinx\bin\searchd.exe
т.е. тоже не понятно как автоматизировать этот момент

3. если отключить поисковый демон и кто-то из посетителя в поиске начнёт что-то искать, сайт мягко говоря падает :)
avatar
Да, не индексирует. searchd ничего не знает о контенте, базе данных и тп, он работает только с предварительно созданными индексными файлами. indexer может уведомить searchd (по крайней мере в *nix системах точно может посылкой сигнала SIGHUP процессу searchd) о том, что файлы индексов необходимо перепрочитать (такой функционал включается запуском indexer-а с параметром --rotate)

Падать ничего не должно, должно выдаваться сообщение о технической ошибке.
avatar
15:22
using config file './sphinx.conf'…
WARNING: key 'address' is deprecated in ./sphinx.conf line 140; use 'listen' ins
tead.
WARNING: key 'port' is deprecated in ./sphinx.conf line 144; use 'listen' instea
d.
indexing index 'topicsIndex'…
collected 12 docs, 0.0 MB
collected 14 attr values
sorted 0.0 Mvalues, 100.0% done
sorted 0.0 Mhits, 100.0% done
total 12 docs, 1637 bytes
total 0.095 sec, 17222.10 bytes/sec, 126.25 docs/sec
indexing index 'commentsIndex'…
collected 16 docs, 0.0 MB
sorted 0.0 Mhits, 100.0% done
total 16 docs, 245 bytes
total 0.057 sec, 4300.16 bytes/sec, 280.83 docs/sec
total 8 reads, 0.0 sec, 12.0 kb/read avg, 0.0 msec/read avg
total 16 writes, 0.0 sec, 0.3 kb/write avg, 0.2 msec/write avg
WARNING: failed to scanf pid from pid_file 'x:\sphinx\log\searchd.pid'.
WARNING: indices NOT rotated.
avatar
searchd
{
# Адрес, на котором будет прослушиваться порт
address = 127.0.0.1

# Ну и собственно номер порта демона searchd
port = 3312

# Лог-файл демона
log = x:\sphinx\log\searchd.log

# Лог поисковых запросов. Если закомментировать, то логировать поисковые строки не будет
query_log = x:\sphinx\log\query.log

# Время в секундах, которое ждет демон при обмене данными с клиентом. По исчерпании происходит разрыв коннекта
read_timeout = 5

# Максимальное количество одновременно-обрабатываемых запросов. 0 означает дофига, а точнее без ограничения
max_children = 30

# Файл, в который сохраняется PID-процесса при запуске
pid_file = x:\sphinx\log\searchd.pid
}

файл никакие не создались для ведения логов
avatar
Пытаюсь установить сфинкс, что то выдает ошибку, линуксоиды помогите пожалуйста чего не хватает? /cmslive.ru/sphinx-0.9.8.1/src/sphinx.h:617: undefined reference to `sphCreateSBCSTokenizer()'
*** Error code 1

Stop in /путь/cmslive.ru/sphinx-0.9.8.1/src.
*** Error code 1
avatar
такие ошибки появляются, когда линкер при линковсе отдельных объектных файлов не подцепляет какойто объект. в котором экспортируется функция, на которую ругается
avatar
Немного повозившись с ./configure эта ошибка исчезла, появилось другое: g++ -Wall -g -D_FILE_OFFSET_BITS=64 -O3 -DNDEBUG -o indexer indexer.o libsphinx.a -L/usr/local/mysql/lib -lmysqlclient -lz -lm -liconv -lexpat -L/usr/local/lib
/usr/bin/ld: cannot find -lmysqlclient
*** Error code 1

Stop in /путь/cmslive.ru/sphinx-0.9.8.1/src.
*** Error code 1
Люди помогите побороть вот это: cannot find -lmysqlclient Я так понял этой библиотеки нету, подскажите как ее поставить или может нужно установить libmysql-dev?
avatar
ага, его надо
avatar

Установил, у меня бинарники в:
/usr/local/bin/indexer
/usr/local/bin/searchd
/usr/local/bin/search
/usr/local/bin/spelldump
Конфиги в: /usr/local/etc/sphinx.conf
/usr/local/etc/example.sql
Теперь никак не найду /etc/rc.local, похоже у меня его нет. Подскажите пожалуйста в какой еще стартовый файл можно прописать /usr/local/bin/searchd --config /usr/local/etc/sphinx.conf
avatar
у тебя, как я понял, FreeBSD. погляди /usr/local/etc/rc.local?
avatar
Да, freebsd, нету такого у меня, есть /usr/local/etc/rc.d но это не файл, а каталог.
avatar
ага. но туда своего лучше не записывать, от туда в фре стартуют системные сервисы
avatar
Может мне самому создать этот файл, прописать в него /usr/local/bin/searchd --config /usr/local/etc/sphinx.conf и перегрузить сервер?
avatar

Sphinx 0.9.8.1-release (r1533)
Copyright © 2001-2008, Andrew Aksyonoff

using config file '/usr/local/etc/sphinx.conf'...
ERROR: section contents: expected token, got '=' in /usr/local/etc/sphinx.conf line 140 col 30.
 
140 строка это = 127.0.0.1
Что с этим делать?
avatar
ладно уже решил.
Теперь другая проблема
using config file '/usr/local/etc/sphinx.conf'…
indexing index 'topicsIndex'…
collected 161 docs, 0.3 MB
collected 328 attr values
sorted 0.0 Mvalues, 100.0% done
sorted 0.0 Mhits, 100.0% done
total 161 docs, 274023 bytes
total 0.202 sec, 1355770.96 bytes/sec, 796.57 docs/sec
indexing index 'commentsIndex'…
collected 271 docs, 0.0 MB
sorted 0.0 Mhits, 100.0% done
total 271 docs, 37276 bytes
total 0.041 sec, 918852.26 bytes/sec, 6680.14 docs/sec
[root@yanga etc]#
И не чего не ищет католог с индексами пустой(
avatar
точнее есть файлы .spd
.spi .spm
но пишет что поиск не дал результатов
avatar
извиняюсь забыл демон запустить)
avatar
Ну и хорошо, что все хорошо :-)
avatar
Люди как проверить работает ли поиск? Вроде все установил, но ничего не ищет, пишет «Удивительно, но поиск не дал результатов». В конфиге прописал
# Источник, который будет хранить данный индекса
source = topicsSource
path = home/index

# Индекс комментариев
index commentsIndex
{
source = commentsSource
path = /home/index

Каталог index вручную просто создал в папке home, но он пустой, что в нем должно быть?
avatar
Папку index через ftp просматриваешь?
у меня он тоже пустой) глянь на него через mc по ssh подключившись)
И демон запущен, а то может ты как и я забыл про него).
avatar
Просматриваю через mc подключившись через ssh, в папке выше index появились файлы index.spa, index.spd, index.sph...*spi,*spl, *spm, *spp. Выполняю usr/local/bin/indexer --all отвечает FATAL: failed to lock pid file '/var/log/searchd.pid': Resource temporarily unavailable (searchd already running?) У меня не было файла /etc/rc.local, я сам его создал и записал в него /usr/local/bin/searchd --config /usr/local/etc/sphinx.conf Потом перезагрузил сервер… Пес его знает работает демон или нет, в linux я слабовато разбираюсь, как еще можно запустить демон кроме записи в rc.local и как проверить запущен ли он?
avatar
ps ax | grep searchd

найдет демона, если он запущен :)
avatar
Работает)
Попробуй
остановить
/usr/local/bin/searchd --config /usr/local/etc/sphinx.conf --stop
и запусти
searchd --config /usr/local/etc/sphinx.conf
только пути свои пиши)
avatar
Просто он может не чего не находит т.к демона ты не перезапускал х.з
avatar
разумные мысли глаголишь!
avatar
а индексер при запущенном поискд надо запускать ключем --rotate
avatar
Сделал, вроде работает. Остался маленький нюанс, сначала поиск работал только по комментариям, по топикам не находил ничего, теперь наоборот в комментах не ищет, по топикам все находит. Что то я не так сделал:(
avatar
как побороть ситуацию? :)
You can now run 'make' to build Sphinx binaries,
and then run 'make install' to install them.
avatar
а в чем ситуация? :)
перевод:
«Теперь Вы можете для начала сборки Сфинкса запустить команду make и затем make install для его установки»
avatar
че пишут, то и надо делать :)
avatar

www# /configure; make; make install
/configure: Command not found.
Making all in src
if test -d ../.svn; then svn info .. --xml | perl svnxrev.pl; fi;
make  all-am
Making all in test
Making install in src
if test -d ../.svn; then svn info .. --xml | perl svnxrev.pl; fi;
make  install-am
test -z "/usr/local/bin" || /home/loragt/data/sphinx-0.9.8.1/config/install-sh -d "/usr/local/bin"
  /usr/bin/install -c 'indexer' '/usr/local/bin/indexer'
  /usr/bin/install -c 'searchd' '/usr/local/bin/searchd'
  /usr/bin/install -c 'search' '/usr/local/bin/search'
  /usr/bin/install -c 'spelldump' '/usr/local/bin/spelldump'
Making install in test
test -z "/usr/local/etc" || /home/loragt/data/sphinx-0.9.8.1/config/install-sh -d "/usr/local/etc"
 /usr/bin/install -c -m 644 'sphinx.conf.dist' '/usr/local/etc/sphinx.conf.dist'
 /usr/bin/install -c -m 644 'sphinx-min.conf.dist' '/usr/local/etc/sphinx-min.conf.dist'
 /usr/bin/install -c -m 644 'example.sql' '/usr/local/etc/example.sql'
make  install-data-hook
mkdir -p /usr/local/var/data && mkdir -p /usr/local/var/log
www#
 
что дальше?
avatar
можно глупый вопрос. Теоретически можно настроить сабж на работу с несколькими движками, установленными на одном сервере? Просто ради любопытства…
  • skif
  • 0
avatar
конечно.
разные индексы и сорсы, а в модуле изменить схему именования индексов при обращении к сфинксапи
avatar
спасибо за руководство, но у меня возникла проблема. Поставил, настроил. вроде работает, но поиск работает нормально только для комментариев. для поиска топиков пишет либо «еще никто не написал сюда», либо выдает какие то странные статьи, абсолютно не релевантные.
avatar
видимо что-то не донастроил, т.к. у всех, в том числе и у меня самого, все ищет как надо :-)
avatar
я это понял) я просто спрашиваю, примерно куда копать, где можно посмотреть то? почему такое может быть?
avatar
Скажите пожалуйста, а на невыделенном хостинге возможна организация поиска?
avatar
если хостер не поставит у себя сфинкс, то нет. не возможно
avatar
А как установить поиск?
Здесь же читал что в SVN есть встроенные средства, но установка кода в закоментированное поле ничего не дала.
Как установить SVN?
avatar
в svn-е этот модуль и есть.

а по установке — в поиск по сайту
avatar
Брр) ок) Поищу. А гугл на какую страницу установить можно?
avatar
на любую :-)
avatar
Я правильно понял что последняя актуальная версия Livestreet может иметь поиск только в случае если на сервере установлено ПО Sphinx?
avatar
ДА.
avatar
На любую не ставится)
404 не дремлет))
avatar
При расположении результата поиска на странице site.ru/blog ничего не выдается. Ошибка 404. Подскажите пожалуйста — как верно настроить поиск?
avatar
ты про мой поиск или про поисковую форму гугла? по последнему ничего не подскажу
avatar
а если про мой, я то не понял 6))
как это расположить результаты поиска? ввод поискового запроса осуществляется на странице /search/. вывод результатов на ней же
avatar
Я спрашивал об установке формы вывода результатов поиска Google. На какой странице это возможно сделать?
avatar
понятия не имею :(
avatar

help
все сделал по мануалу…
индексы топиков и коментов создаются в разных папках в виде .new.spa и т.д
Но поиск не работает. Пробую запустить демон руками
/usr/local/bin/searchd --config /usr/local/etc/sphinx.conf
в ответ получаю

using config file '/usr/local/etc/sphinx.conf'...
creating server socket on 127.0.0.1:3312
WARNING: index 'topicsIndex': preload: failed to open /var/sphinx/topics/.sph: No such file or directory; NOT SERVING
WARNING: index 'commentsIndex': preload: failed to open /var/sphinx/comments/.sph: No such file or directory; NOT SERVING
FATAL: no valid indexes to serve

Куда копать?
avatar
указать в конфиге пути для сохранения индексов, куда юзер от которого производится запуск индексе имеет право на запись.

ну и ессно сначала требуется провести индексацию indexer-ом, иначе searchd не запустится, т.к. файлов еще не будет…
avatar
В общем разобрался как на linux все это ставится.
— для индексов топиков и комментов сделал разные папки, какие и прописываем в sphinx.conf
— затем запускаем indexer --all
— затем планируем crontab
— затем прописываем демон в автозагрузку rc.local
— и только затем запускаем демон или ресетим сервер для загрузки демона с rc.local
Именно такая последовательность привела к положительному результату.
avatar
ага, все именно так :-)
avatar

а у меня

/usr/local/bin/searchd --config /usr/local/etc/sphinx.conf
Sphinx 0.9.8.1-release (r1533)
Copyright © 2001-2008, Andrew Aksyonoff

using config file '/usr/local/etc/sphinx.conf'...
creating server socket on 127.0.0.1:3312
WARNING: index 'topicsIndex': preload: /srv/www/htdocs/index/top.sph is invalid header file (too old index version?); NOT SERVING
WARNING: index 'commentsIndex': preload: /srv/www/htdocs/index/com.sph is invalid header file (too old index version?); NOT SERVING
FATAL: no valid indexes to serve

подскажите в чем беда?
avatar
Ну. ниже КулХацкер спрашивает про индексер. ессно, что если индексатор не запускается, то откуда ж будет поисковый демон брать индексы для поиска? :))

ПыСы: странно, что кулХацкер, т.е. крутой хакерюга, не понял простого сообщения на английском, чиста конкретно хацкерском языке (:
avatar
Чиста канкретно понял.

Спасибо, все заработало, просто мне надо было внимательнее быть, а не сидеть и тупить после 5 литров пива ;)))
avatar

Получаю ошибку и никак не могу понять в чем дело?

на
/usr/local/sphinx/bin/indexer --all
получаю:
Sphinx 0.9.8.1-release (r1533)
Copyright © 2001-2008, Andrew Aksyonoff

using config file '/usr/local/etc/sphinx.conf'...
indexing index 'topicsIndex'...
collected 60 docs, 0.3 MB
collected 24 attr values
sorted 0.0 Mvalues, 100.0% done
sorted 0.0 Mhits, 100.0% done
ERROR: index 'topicsIndex': failed to create /srv/www/htdocs/index/top.sph: Is a directory.
total 60 docs, 271819 bytes
total 0.140 sec, 1940095.46 bytes/sec, 428.25 docs/sec
indexing index 'commentsIndex'...
collected 61 docs, 0.0 MB
sorted 0.0 Mhits, 100.0% done
ERROR: index 'commentsIndex': failed to create /srv/www/htdocs/index/com.sph: Is a directory.
total 61 docs, 4054 bytes
total 0.010 sec, 405400.01 bytes/sec, 6100.00 docs/sec
animalgrad:/srv/www/htdocs/sphinx #
avatar
Сообщениям об ошибках в опенсорсных-посикс приложениях надо верить (не то что вендузятские :)).

Тебе же на чистом английском написали:
ERROR: index 'topicsIndex': failed to create /srv/www/htdocs/index/top.sph: Is a directory.

top.sph — это директория.

Покажи кусок конфига, где прописаны пути сохранения индексов на диск.
avatar
Спасибо, все заработало, просто надо было запускать мускул не как на Бздях, а как на линухах, а это принципиально, но все в прорядке, все работает…
avatar
ЭЭ. а чем отличается запуск MySQL на линуксе и бсд?
я думаю, что речь идет не о разнице в системе запуска сервисов (/usr/local/etc/rc.d/sName start+требование прописи сервиса в /etc/rc.conf в БСД и /etc/init.d/sName start в Линукс)? :)
avatar
вот вот…
пьяная башня… незаметила разницы, и долго материлась…
но потом поняла ошибку и была жестоко наказана, и ошибка была исправленна
avatar
кстати, лучше не хранить индексы в web-дереве.
avatar
а как лучше?
avatar
хранить где-нибудь в месте, недоступном через веб-сервер ;)
avatar
Есть примеры?
и почему это лучше делать?

безопасность?
avatar
Ну хотя бы она :) Вдруг в сфинксе дырку найдут, какнибудь связанную с индексами
avatar
Что хотел заметить, что с таким конфигом в результаты поиска попадают и закрытые топики/черновики.

И еще, не подскажите, в чем может быть проблема. С LS 1.2 мигрировал на версию из SVN. Сфинкс индексные файлы создает, вроде бы все ок. Конфиг взял kruft'а, но штука в том, что корректно ищет только по комментарием, в выдаче топиков совершенно не те топики, что нужно выводятся. Как можно попытатся отладить данную проблему?
avatar
а в логах сфинкса точно все нормально? у меня была такая же проблема, там дело с путями была
avatar
Именно, уже смекнул. Указал для topicIndex и commentsIndex один и тот же каталог, вот файлы друг друга и перезатирали.
avatar
Спасибо за статью, установил sphinx без особых проблем. Вот только не получается добавить источник — пользователи (people) для организации поиска по полям профиля пользователей.

конфиг:

<code>
# Источник пользователей
source peoplesSource : lsParentSource
{
        sql_query               = \
                        SELECT user_id, user_login, UNIX_TIMESTAMP(user_date_register) as user_date_register \
                        FROM prefix_user \
                        WHERE user_date_register>=$start AND user_date_last<=$end

        sql_query_range         = SELECT MIN(user_id),MAX(user_id) FROM prefix_user
        sql_range_step          = 5000

}

индекс пользователей
index peoplesIndex
{
        # Источник, который будет хранить данный индекса
        source                  = peoplesSource
        path                    = /var/index/peoples/

        # Тип хранения аттрибутов
        docinfo                 = extern

        mlock                   = 0

        # Используемые морфологические движки
        morphology              = stem_enru, soundex, metaphone

        # Кодировака данных из источника    
        charset_type            = utf-8


        # Из данных источника HTML-код нужно вырезать
        html_strip                              = 1
}

</code>
  • tab
  • 0
avatar
sql_query и sql_query_range друг другу противоречат.
во втором запросе получаются минимальное и максимальное значения атрибута, по которому будет разбиваться процесс индексации по шагам, а потом начинает выполняться 1ый запрос с подстановкой переменных start и end через заданный 3им свойством шаг.
Смотримс что согласно твоему конфигу получается:
1. получили минимальное и максимальное значение юзер_ид.
2. начали выполнять запрос
<code>SELECT user_id, user_login, UNIX_TIMESTAMP(user_date_register) as user_date_register \
                        FROM prefix_user \
                        WHERE user_date_register>=МИНИМУМ_ИЗ_ПЕРВОГО_ПУНКТА AND user_date_last<=МИНИМУМ+ШАГ(5000)</code>
.
потом переменные инкрементируются на значение шага (5000) и запрос выполняется снова. и тд до максимального значения юзер_ид.

Гениальная мысль: почему это указана разбивка по юзер_ид (что вообщем-то логично), но значения айдишников подставляются для сравнения с датой регистрации юзера в формате временной метки юникс (количество секунд, прошедшее с 1.01.1970г — число на данный момент сильно большое).
Логично предположить, что юзеров с регистрацией 1...5000...10000… сек на сайте, созданном в 2009 году быть не может :-), следовательно, 1ый запрос выдает 0 рядов результата. Отрабатывая при этом совершенно верно, как написано :-)

Резюме: в 1м запросе необходимо указать условие по user_id. Как переписать запрос для этого, я думаю, подсказывать нет необходимости =)

Гениальная догадка:
avatar
гениальной догадки нету :)
avatar
Попробовал поиграться с конфигом, пока без результатов. Мне нужен поиск по полям профиля пользователя (имя, обо мне, местоположение, дата регистрации, интересы и т.д). Может кто подскажет куда копать.

Еще ведь нужно добавить закладку сюда:
картинка
avatar
я думал, что в первом своем ответе расписал максимально подробно чего не так и что нужно сделать :-)
в твоем текущем конфиге надо всего-лишь написать первый запрос с условием WHERE user_id>=$start AND user_id<=$end вместо того, что сейчас написано.

ЗЫ: еще раз перечитал свой ответ предыдущий — всетаки то, что написано выше является единственным его следствием :-) Разве нет?
avatar
а закладку сделать очень просто — смотри текущий шаблон в папке ActionSearch. Естественно чтобы добавить поиск по полям профиля еще нужно дописать в модуле и экшене соответствующий функционал. но об этом в вопросе выше не было не слова.
вопрос был только про конфиг Сфинкса
avatar
друзья, как выполнить configure; make; make install? доступ по ssh хостер не предоставляет.
avatar
админы поставили, скажите а куда закидывать конфигурационный файл?
avatar
у меня вопрос появился. как-то можно отключить сфинксовое выделение цветом? имею мнение, что это рвет ссылки. Или может быть можно както неучитывать ссылки в поиске?
помогите плз, застрял на этом(((
avatar
ложная тревога) разобрался сам)
avatar
Народ а как сабж можно собрать самому?
Сегодня от хостера получил такой вот ответ
Этого программного обеспечения нет в репозитариях Fedora Linux.
Вы можете собрать его в домашней директории пользователя.


ЗЫ: сменить хостера не предлагать :)
avatar
ну и собери его у себя в ~
avatar
Как? Я просто ноль в єтом :(
С чего начать?
avatar
со скачивания исходников сфинкса с сайта :)

распаковываете их в домашнюю директорию и в папке с исходниками
./configure && make && sudo make install
avatar
а сборки под debian есть?
avatar
я не нашел (у меня у самого он родимый). он немного в принципе файлов раскидывает при make install — можно накатать по быстрому control-скрипт и собрать пакет. это будет единственно-верный debian way =)
avatar
классно сказано учитывая что у меня опыт общения с Linux системами минимальный а Debian стоит minimal без компилятора
avatar
снова добрался… а как в ubuntu dev пакеты mysql зовутся? mysql-dev и libmysql-dev не катит
avatar
может кому пригодится — libmysqlclient15-dev
avatar
Китайский! Никто не может ли доступно для чайника задокументировать процесс установки этого сфинкса, по пунктам?! Или, может, есть где-то такая инфа уже, как найти? Или никто для чайников расписывать не будет и нужно найти знающего чела, кто поставит этого Сфинкса?
avatar
уже вроде здесь спрашивали. Ну что может быть проще
./configure && make && sudo make install

разве что депендисы бы указать не мешало бы.
avatar
Есть проблема при вхождении поискового запроса в параметры хтмл-тегов. Например, title изображений разрывается подсветкой и ещё начало тега обрезается, если параметре много текста.

Можно ли делать исключения, если обнаружено вхождение внутри тега и оборачивать спаном весь тег? И с обрезкой придумать что-то, чтобы теги помещались в результатах поиска целиком, а с ними — и их содержимое — картинки, встроенные плеерв и тд
avatar
еще раз спасибо за статейку, сделал маленькое дополнение для пользователей Ubuntu\Debian
avatar
У меня вот такая проблема возникает с сфинксом.
Все установил, настроил конфиг, проиндексировал.
При поиске ищет слово, и в результатах 3 топика 3 комментария,
а в списке топиков только 1 топик показывает.
При этом очень много слов, которые есть не находит.
В чем может быть проблема?
avatar
Господа! Требуется помощь. Значится мне хороший товарищ помог установить и настроить sphinx'а на сервере: «индекс живой. Всё работает. Абсолютно.». И да, папка баз индекса полна, демон работает, казалось бы, НО…
Я не перестаю «удивляться, что поиск не дал рез-тов». Подскажите, пожалуйста, как диагностировать, куда копать?
Yuri25 писал сначала о том же, а потом внезапно раааз… и всё у него заработало. Но он не сказал, как поборол.
Как впринципе ЛС снюхивается со Сфинксом? Куда посмотреть, где рыть? Заранее премного благодарен!
avatar
Вопрос тока-что снялся)
avatar
Товарищи. Объясните, пожалуйста, кто знает, логику работы морфологических движков, используемых Sphinx'ом. У меня на сайте установлен оный. Набираю запрос «е95», но получаю в результатах топики и с подсвеченными E55, и AH6. Как бы сделать так, чтобы почётче поиск работал? Т. е. склонения и падежи слов бы предлагались, а вот запросы с циферками выдавалибы однозначные рез-ты? Заранее спасибо!
avatar
Жаль не описано, какой будет конфигурационный файл если на vps находятся 2 сайта на ls…
  • Mmka
  • 0
avatar
примитивный способ: запустить два сфинкса.
насчет способа все-в-одном-конфиге я буду ковырять в ближайшее время
avatar
Не знаю как это отразится на производительности… Да и трудно представляю это)
А вот если конфиг подправите и выложите буду пробовать
avatar
производительность постарадать неособо должна. сам сфинкс памяти ест мало, ну разве что индексация.ито врядли.
avatar
Я Лоре в аське както отписывал процесс настройки Сфинкса под несколько сайтов. Требуйте с нее топик на эту тему ;)
avatar
Господа, что-то у меня нет rc.local в папке etc. Хостинг на FreeBSD
avatar
Выручайте, хостинг на freebsd. Значит по моей просьбе хостёр установил сфинкса, вот пути:

/usr/local/bin/indexer
/usr/local/bin/search
/usr/local/sbin/searchd

Далее, в /usr/local/etc/sphinx.conf настроил как описано выше.

так как rc.local в папке etc нет, в freebsd запуск идёт через папку /usr/local/etc/rc.d/ в которой уже есть (возможно хостёр поставил) файл sphinxsearch, вот внутренности этого файла:

#!/bin/sh
#
# $FreeBSD: ports/textproc/sphinxsearch/files/sphinxsearch.sh.in,v 1.4 2008/04/27 08:50:49 miwi Exp $
#
# PROVIDE: sphinxsearch
# REQUIRE: LOGIN
# KEYWORD: shutdown

#
# Add the following lines to /etc/rc.conf to enable sphinxsearch:
#
# sphinxsearch_enable="YES"
#
# Other rc.conf variables:
#
# sphinxsearch_conffile="/usr/local/etc/sphinx.conf"
#                          -- path to config file
# sphinxsearch_pidfile="/var/run/sphinxsearch/searchd.pid"
#                          -- location of pidfile: must match setting
#                             in ${sphinxsearch_conffile}
# sphinxsearch_user="_sphinx"
#                          -- user to run searchd as
# sphinxsearch_group="_sphinx"
#                          -- group to run searchd as
# sphinxsearch_logdir="/var/log/sphinxsearch"
#                          -- directory searchd writes logs to
#
. /etc/rc.subr

name=sphinxsearch
rcvar=`set_rcvar`

load_rc_config ${name}

: ${sphinxsearch_enable="NO"}
: ${sphinxsearch_conffile="/usr/local/etc/sphinx.conf"}
: ${sphinxsearch_pidfile="/var/run/sphinxsearch/searchd.pid"}
: ${sphinxsearch_user="_sphinx"}
: ${sphinxsearch_group="_sphinx"}
: ${sphinxsearch_logdir="/var/log/sphinxsearch"}

command=/usr/local/sbin/searchd
pidfile=${sphinxsearch_pidfile}
required_files=${sphinxsearch_conffile}
start_precmd=sphinxsearch_prestart

sphinxsearch_prestart ()
{
    piddir=$(dirname ${sphinxsearch_pidfile})
    if [ ! -d ${piddir} ]; then
	mkdir -m 755 -p ${piddir}
	chown -R ${sphinxsearch_user}:${sphinxsearch_group} ${piddir}
    fi
    if [ ! -d ${sphinxsearch_logdir} ]; then
	mkdir -m 755 -p ${sphinxsearch_logdir}
	chown -R ${sphinxsearch_user}:${sphinxsearch_group} \
	    ${sphinxsearch_logdir}
    fi
}

case "${sphinxsearch_flags}" in
    *--config\ *)
    echo "Warning \$sphinxsearch_flags includes --config option." \
	"Please use \$sphinxsearch_conffile instead."
    ;;
    *)
    sphinxsearch_flags="--config ${sphinxsearch_conffile} ${sphinxsearch_flags}"
    ;;
esac

run_rc_command "$1"

Может что-то в нём надо прописать?
avatar
ну если есть инит-скрипт — это это вообще супер :)
Тогда надо просто в /usr/local/etc/rc.conf вставить строчку
sphinxsearch_enable="YES"

и с этого момента будет автозапускаться СФинкс.
avatar
Блин, в /usr/local/etc/ нет rc.conf?

тут вот написано (http://www.citforum.ru/operating_systems/freebsd/handbook/configtuning-starting-services.shtml)

Замечание: Не записывайте свои команды в /etc/rc.conf. Для запуска демонов, или для выполнения вашей команды во время запуска — запишите ваш скрипт в /usr/local/etc/rc.d.


а у меня уже получается sphinxsearch там есть, кстати в нём есть закомментированная такая строчка
sphinxsearch_enable=«YES»
, может раскомментировать?
avatar
А ступил, извиняюсь, файлик этот есть, он на следующей странице был, значит прописал в него
sphinxsearch_enable=«YES»
, перезагрузил сервер, не работает. В общем походу не осилить мне это дело самому, прошу помощи, кто возьмётся настроить sphinx'a на FreeBSD, если кто этим зарабатывает, сразу ценник скажите. Спасибо.
avatar
Народ, у меня вообще нет такого файла rc.conf (Debian 5). После перезагрузки сервера не работает сфинкс. При ручном запуске из cron выдает WARNING:

failed to open pid_file '/var/log/sphinx/searchd.pid'.
WARNING: indices NOT rotated.

После ручного запуска с консоли /usr/local/bin/searchd — все начинает нормально индексироваться.

Подскажите пожалуйста куда прописать для автозапуска, чтобы после перезагрузок работало. Спасибо.
avatar
в rc.local перед exit 0 добавить
/usr/local/binsearchd
avatar
/usr/local/bin/searchd если быть точным, к тому же путь определяется префиксом при конфигурировании сорса
avatar
обычно сфинкс ставится поумолчанию :)
[offtop]Кстати, ты не тестировал бету 0.9.9? Там какие то странные глюки бывают с поиском :)[/offtop]
avatar
девиз админов звучит — «Работает — НЕ ТРОГАЙ !!!!» =)
avatar
привычка testing борщеарчевода. Не было печали, апдейтов накачали XD
avatar
девиз админов это: «быстро поднятое не считается упавшим» XD
avatar
в Linux такого файла и не должно быть — такой файл есть в BSD.
avatar
неправда. в ArchLinux есть :p
avatar
Вчера пытались ставить — хостер прав не дает, но обещал поставить, если мы предоставим исходники и отправные данные для настройки.

Так вот вопрос — что именно хостеру передать надо для успешной настройки Sphinx'a?
Кто ставил, ответьте, пожалуйста, какие данные нужно знать, чтобы настроить модуль.
avatar
ну во первых сам сфинкс версии 0.9.8. настроенный конфиг к нему. и в крон добавить indexer
Ну и сам searchd в автозапуск
avatar
тупой вопрос наверно… как сунуть сфинксу два конфига от двух сайтов на ЛС?
=))
avatar
а в одном файле сделать все не судьба? а так
/usr/bin/searchd --config /путь_к_конфигу/config.conf
avatar
ну я как бы и справил как лучше =) два демона мускать или тыркать все в один конфиг.
avatar
в пользу 2х демонов говорит отсутствие системы разделения доступа — любой клиент серчд может делать запросы к любым индексам, имеющимся в настройках свинкса
avatar
Ребята, напишите пожалуйста как настроить sphinx для поиска на 2-х 3-х сайтов на одном IP. Искал здесь — не нашел:(
avatar
обратись к Лоре, я ей както расписывал что и как
avatar
Ребята, напишите кто знает как настроить свинкс для поиска на нескольких сайтах на одном IP. Обращался к Лоре и Крафту, но они к сожалению помочь не имеют возможности.
avatar
При поиске выдает «Системная ошибка, повторите позже».

0. Прочитал все, что есть, однако, ответа не нашел.
1. Демон запущен, индексацию произвел.
2. Утилитка search находит результаты.
3. Вставил отладку в файл Sphinx.class.php. Результат возвращается.

Что-то не донастроил? Куда капнуть? =)
avatar
Решилась проблема переустановкой LS + поставил версию сфинкса 0.9.8.
Спасибо, kruft за помощь. Вместе нашли решение :)
avatar
Как решили проблему? Переустановка LS не вариант совсем.
Стоял сфинкс 0,9,8, все было норм. обновили до 0,9,9, перестал выдавать результаты и пишет — Системная ошибка, повторите позже.

В чем тут косяк может быть?
avatar
в версии 0.9.9 :)
avatar
ну да. откатились назад и все заработало. но причина интересна.
avatar
Решил проблему следующим образом:
в Sphinx.class.php


			if(!is_null($aExtraFilters)){
				foreach($aExtraFilters AS $sAttribName => $sAttribValue){

					$this->oSphinx->SetFilter(
						$sAttribName, 
						(is_array($sAttribValue)) ? $sAttribValue : array($sAttribValue)
					);
				}


меняем на


			if(!is_null($aExtraFilters)){
				foreach($aExtraFilters AS $sAttribName => $sAttribValue){
if($sObjType=="topic" and $sAttribName=="topic_publish"){
					$this->oSphinx->SetFilter(
						$sAttribName, 
						(is_array($sAttribValue)) ? $sAttribValue : array($sAttribValue)
					);
}
elseif($sObjType=="comment" and $sAttribName=="comment_delete"){
					$this->oSphinx->SetFilter(
						$sAttribName, 
						(is_array($sAttribValue)) ? $sAttribValue : array($sAttribValue)
					);
}

					echo $this->oSphinx->GetLastError();
				}
			}


Короче говоря, в первом случае оба атрибута, topic_publish и comment_delete передаются при поиске в каждом индексе. Ессно, тот или иной атрибут существует только в определенном индексе. В 0.9.8 такое прокатывало, в 0.9.9 видимо ужесточили проверку. Я воткнул простую проверку и передаю только нужные атрибуты (не очень красиво, но главное понять в чем проблема)
avatar
по сути вещей, то что я писал (в модуле) должно как раз и передавать только те экста-атрибуты в запрос, какие подходят под текущий контент-тайп
avatar
здесь проблема была в другом — при каждом виде поиска объект Sphinx был один и тот же, в итоге если искомое слово было и в топиках и в комментах, то это приводило к ошибке
avatar
тупанул с вопросом. простите ;)
avatar
avatar
багу в транке нашел —
из конфига модуля Серч:
$config['entity_prefix']  = '';
$config['sphinx']['host'] = 'localhost';
$config['sphinx']['port'] = '3312';

— как я понимаю, и как написано в исходниках модуля, элемент с ключем entity_prefix также должен лежать в массиве $config['sphinx']
avatar
это не бага, раздел ['sphinx'] подставляется автоматически
avatar
а строка 24 файла ActionSearch.class.php ($this->Viewer_Assign('sAdminMail', SYS_MAIL_FROM_EMAIL);) — тоже не баг? (просто последние пол года в связи с занятостью плохо следил за развитием движка) — в смысле то, что константа а не конфиг-объект.
avatar
сорри, туплю :( спать пора уже
avatar
настроил я Sphinx, работает, наткнулся в поиске на свои собственные черновики ) причем я был не авторизирован на сейте… это нормально? кто знает как лечить? (версия 0.3.1)
avatar
значит в момент индексации это был не черновик
avatar
черновик ;)
avatar
да, индексируются все, а поиск происходит только по опубликованным, за это отвечает флаг trac.lsdev.ru/livestreet/browser/tags/0.3.1/classes/actions/ActionSearch.class.php#L3
avatar
Люди, кто знает как настроить свинкс для поиска на нескольких сайтах на одном IP. Обращался к Лоре и Крафту, но они к сожалению помочь не имеют возможности. Напишите пожалуйста, неужели никто не делал подобное?
avatar
ответил в личку, здесь скопирую:
да все просто — для этого даже есть функционал в дистрибе движка — в конфиге модуля Search установи для разных сайтов разные entity_prefix-ы и в конфиг Сфинкса добавь подобные с существующими сорсы и индексы.

типа source site1Topics и site2Topics. соответственно с префиксами site1 и site2. по-дефолту префикс пустой
avatar
Вот спасибо добрый человек, буду пробовать воплотить.
avatar
Я правильно понял, что нужно в sphinx.conf помимо

source lsParentSource
{
        type            = mysql
        sql_host        = your_database_host
        sql_user        = your_database_login
        sql_pass        = your_database_password
        sql_db          = your_database_name
        sql_port        = 3306
        # Для ускорения работы прописываем путь до MySQL-го UNIX-сокета (чтобы 
        # операции с БД происходили не через TCP/IP стек сервера)
        sql_sock        = /var/run/mysqld/mysqld.sock
    
        
        mysql_connect_flags     = 32 # 32- включение сжатие при обмене данными с БД
    
        # Включам нужную кодировку соединения и выключаем кеш запросов
        sql_query_pre                   = SET NAMES utf8
        sql_query_pre                   = SET SESSION query_cache_type=OFF    
}


# Источник топиков
source topicsSource : lsParentSource
..................................
#######################
#
# Описываем индексы
#
#######################

index topicsIndex
.....
index usersIndex
.....


нужно прописать для другого сайта другие настройки для доступа к другой базе данных.
Не понял что означает в первой строке
source lsParentSource

и здесь
# Источник топиков
source topicsSource : lsParentSource

Допустим я прописал в конфиге модуля search для первого сайта так:
define('SEARCH_ENTITY_PREFIX','site1');

Куда теперь прописать site1 в сорсы и индексы?
avatar
Люди, кто знает как настроить подскажите пожалуйста.
avatar
source…: ...2 означает, что… берет все настройки (наследует) перечисленные в ...2.

таким образом, для первого сайта например, надо указать в конфиге ЛС site1_, для второго site2_.

а в конфиге сфинкса сделать site1_parentSource и site2_parentSource для второго соответственно.

и потом все разделы индексов и сорсов сделать типа site1_topicsSource: site1_parentSource и site2_topicsSource: site1_parentSource для 1го и 2го сайтов. аналогично для всех разделов source и index
avatar
Минимум второй раз за последнее время вижу этот спам про лазерные граверы (свежий топик про чудо любви). Попробовал поискать — выяснил, что поиск не находит слова внутри ссылок. Или это потому, что новый топик и ещё не успел проиндексироваться или что-то в этом духе?
  • Wave
  • 0
avatar
теги вырезаются при индексировании
avatar
господа! Какую версию сфинкса ставить для 0.4.2, 2.0.1-beta (Apr 2011) или 0.9.9-release (Dec 2009)?
avatar
тестировалось только на 0.9.9
avatar
правильно ли я понял, что если доступа к машине у меня нет — я его установить не смогу? у меня виртуальный хостинг… на счёт наличия там компилятора c++ и программы make крайне не уверен, да и судя по всему мне до них не добраться будет
avatar
чисто судя по комментам дальнейшее направление понял. клянчить у хостера помощи)
avatar
У меня проблема такая: При выполнении indexer --all пишет:

FATAL: no indexes found in config file './sphinx.conf'

Т.е. он конфиг читает но не находит индексов. Вот код конфига:
source testing-index
{
	type = mysql
	sql_host = localhost
	sql_user = user
	sql_pass = 123
	sql_db = search_test
	sql_port = 3306

  # main document fetch query
  # mandatory, integer document ID field MUST be the first selected column
	sql_query = SELECT id, header_ru, text_ru FROM category
	sql_attr_uint    = header_ru
	sql_attr_uint    = text_ru	
 
  # document info query, ONLY for CLI search (ie. testing and debugging)
  # optional, default is empty
  # must contain $id macro and must fetch the document by that id
  sql_query_info    = SELECT * FROM category WHERE id=$id
}

index testing-index
{
  # document source(s) to index
  # multi-value, mandatory
  # document IDs must be globally unique across all sources
  source      = testing-index

  # index files path and file name, without extension
  # mandatory, path must be writable, extensions will be auto-appended
  path      = d:/webservers/home/sphinx/index

  # document attribute values (docinfo) storage mode
  # optional, default is 'extern'
  # known values are 'none', 'extern' and 'inline'
  docinfo      = extern

  # memory locking for cached data (.spa and .spi), to prevent swapping
  # optional, default is 0 (do not mlock)
  # requires searchd to be run from root
  mlock      = 0

  # morphology   = stem_en, stem_ru, soundex
  morphology    = stem_en

  # minimum indexed word length
  # default is 1 (index everything)
  min_word_len    = 1

  charset_type    = utf-8
  html_strip    = 1
  stopwords    = d:\webservers\home\sphinx\stop_words.txt
}
avatar
А где во FreeBSD лежит Sphinx?

меня интересует в частности индексер чтобы проиндексировать, но во фряхе такого пути нет "/usr/local/sphinx/bin/indexer"
avatar
кто-то спрашивал про то как настроить сфинкс на нескольких сайтах
avatar
avatar
Помогите пожалуйста!
При запуске:
indexer -c sphinx/etc/sphinx.conf --rotate --all

Выдает ошибку:
[17] => WARNING: access denied to PID 26058.
[18] => WARNING: indices NOT rotated.

В какую сторону копать?
avatar
Попробуй сделать через команду sudo у тебя нету прав
avatar
а куда смотреть при такой ошибке?

using config file '/usr/local/etc/sphinx.conf'…
ERROR: inherited section 'topicsSource': parent doesn't exist (parent name='lsParentSource', type='source') in /usr/local/etc/sphinx.conf line 45 col 1.
FATAL: failed to parse config file '/usr/local/etc/sphinx.conf'

sphinx.conf -копи/паст
avatar
Помогите пожалуйста.
Нужно поставить Sphinx.
Киев.
avatar
Здравствуйте!
Понравился поиск на Хабрахабре и решил поставить Sphinx.
Пока пробовал ставить на локальной машине где Denwer.
На ПК стоит Windows 7 64.
В этой статье не всё понятно ( для меня недостаточно подробно), делал паралельно по этой инструкции с видео.
— скачал Sphinx версии Win64 binaries w/MySQL support 2.0.6-release.
— розпаковал в папку на C:\sphinx
— отредактировал файл config
— создал в Mysql тестовую базу данных
И на этапе (в этой статье вроде «Настройка автозапуска поискового демона при старте системы») в видео на 15:55 мин у меня такая ошибка, скрин.
Подскажите, пожалуйста что не так
avatar
Включаете в свойстах консоли мышку, копируете в гугл и ищете ответ — наверняка есть.
А вообще давно пора понять что под винду никто ничего не делает и поддержка работы этого ПО иключительно для популяризации.
avatar
Скопировал
Installing service…
FATAL: OpenSCManager() failed: code=5, error=╬Єърчрэю т фюёЄєях.
Нашел в Google
Так понял что нужно от имени администратора вводить в cmd. Перевоначально я и так вводил с профиля админа. Пишут что «нажмите правой кнопкой мыши на запуске cmd», запустил уже так.
И получилось!
Спасибо beauty_free!
avatar
А вообще давно пора понять что под винду никто ничего не делает и поддержка работы этого ПО иключительно для популяризации.
Много лет пользуюсь виндой. Гду-то раз в 2 года переустанавливаю. Линукс не более 10 минут в работе наблюдал. Не могу сказать что-то хорошее про него или плохое
avatar
Это что-то… По тестовой базе данных ищет, но сам сервис Sphinx не запускается, пишет ошибка 1067 (именно где сервисы Windows). В групе vk.com/sphinxsearch ответа на вопрос нет.
Решил поставить 32 битную версию, начал удалять SphinxSearch service как здесь описано, но только начинаю что-либо вводить окно пропадает. Видео
Подскажите, пожалуйста!
avatar
Удалил службу Сфинкса, здесь нормально написано как
avatar
Поставил sphinx-2.0.6-release-win32, процес работает!
Вероятно, нужно будет на Ubuntu все же ставить. Там так же или сложней чем на виндовс?
А как сделать чтоб как на habrahabr в результатах поиска было разделение — темы, комментарии, люди?
avatar
avatar
avatar
подскажите пожалуйста, как настроить Сфинкс на работу с двумя сайтами? На один настроил без проблем, а вот как прикрутить второй ума не приложу.
avatar
Как минимум сделать разные конфиги сфинкса и при запуске демона и индексатора указывать --config=/путь/до/конфига.
Ну и в конфигах самих задать разные сокеты или tcp-порты, на которых будет висеть демон.
avatar
Хосте сказал что не возможно
Цитирую хостера:
Не выйдет запустить 2 сервера с разными конфигами.
Надо в один конфиг вместить индексирование нескольких баз данных.
Все это можно сделать, читайте документацию и задавайте на форумах вопросы.
avatar
Возможно ли в один конфиг уместить правила для обоих сайтов или Сфинкс так не рабоатет? Если кто-то имеет опыт настройки для нескольких сайтов пожалуйста отзовитесь.
avatar
Пробывал вот так

service searchd start --config=/etc/sphinx/sphinx2.conf

/usr/bin/indexer --all --config=/etc/sphinx/sphinx2.conf
avatar
не удается запустить выдает ошибку и дисконнектит

avatar
Здравствуйте, ещё разок, устанвоил сфинкс, на один сайт все таки, второй оставил без поиска.

Возникла проблема, много материалов, окло 80 тыс.

ввожу в поиск /search/topics/?q=adobe
3366 Топиков находит

Нажимаю последняя страницы выдает ошибку



Подскажите люди добрые куда копать, не понимаю в чем беда
avatar
После 100 страницы ошибка, начианая со 101 ((((
Только зарегистрированные и авторизованные пользователи могут оставлять комментарии.