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

68
Итак, начинаю серию топиков по прикручиванию поисковой машины 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
}
	
  • +20
  • 09 ноября 2008, 19:30
  • kruft

Комментарии (194)

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

это я делал на старом сервере, недавно сильно обновил сервер (память в 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 указана для того, чтобы после переиндексации индексер послал поисковому демону сигнал на релоад индесных файлов.

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

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

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
 
0

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

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

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

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

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

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

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

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

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

Падать ничего не должно, должно выдаваться сообщение о технической ошибке.
0
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.
0
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
}

файл никакие не создались для ведения логов
0
Пытаюсь установить сфинкс, что то выдает ошибку, линуксоиды помогите пожалуйста чего не хватает? /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
0
такие ошибки появляются, когда линкер при линковсе отдельных объектных файлов не подцепляет какойто объект. в котором экспортируется функция, на которую ругается
0
Немного повозившись с ./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?
0
ага, его надо
0

Установил, у меня бинарники в:
/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
0
у тебя, как я понял, FreeBSD. погляди /usr/local/etc/rc.local?
0
Да, freebsd, нету такого у меня, есть /usr/local/etc/rc.d но это не файл, а каталог.
0
ага. но туда своего лучше не записывать, от туда в фре стартуют системные сервисы
0
Может мне самому создать этот файл, прописать в него /usr/local/bin/searchd --config /usr/local/etc/sphinx.conf и перегрузить сервер?
+1

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
Что с этим делать?
0
  • avatar
  • skpnm
  • 12 декабря 2008, 09:10
ладно уже решил.
Теперь другая проблема
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]#
И не чего не ищет католог с индексами пустой(
0
  • avatar
  • skpnm
  • 12 декабря 2008, 09:25
точнее есть файлы .spd
.spi .spm
но пишет что поиск не дал результатов
0
  • avatar
  • skpnm
  • 12 декабря 2008, 09:31
извиняюсь забыл демон запустить)
+1
  • avatar
  • skpnm
  • 12 декабря 2008, 10:32
Ну и хорошо, что все хорошо :-)
+1
Люди как проверить работает ли поиск? Вроде все установил, но ничего не ищет, пишет «Удивительно, но поиск не дал результатов». В конфиге прописал
# Источник, который будет хранить данный индекса
source = topicsSource
path = home/index

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

Каталог index вручную просто создал в папке home, но он пустой, что в нем должно быть?
0
Папку index через ftp просматриваешь?
у меня он тоже пустой) глянь на него через mc по ssh подключившись)
И демон запущен, а то может ты как и я забыл про него).
0
Просматриваю через 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 и как проверить запущен ли он?
0
ps ax | grep searchd

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

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#
 
что дальше?
0
можно глупый вопрос. Теоретически можно настроить сабж на работу с несколькими движками, установленными на одном сервере? Просто ради любопытства…
0
  • avatar
  • skif
  • 22 декабря 2008, 00:37
конечно.
разные индексы и сорсы, а в модуле изменить схему именования индексов при обращении к сфинксапи
0
спасибо за руководство, но у меня возникла проблема. Поставил, настроил. вроде работает, но поиск работает нормально только для комментариев. для поиска топиков пишет либо «еще никто не написал сюда», либо выдает какие то странные статьи, абсолютно не релевантные.
0
видимо что-то не донастроил, т.к. у всех, в том числе и у меня самого, все ищет как надо :-)
0
я это понял) я просто спрашиваю, примерно куда копать, где можно посмотреть то? почему такое может быть?
0
Скажите пожалуйста, а на невыделенном хостинге возможна организация поиска?
0
если хостер не поставит у себя сфинкс, то нет. не возможно
0
А как установить поиск?
Здесь же читал что в SVN есть встроенные средства, но установка кода в закоментированное поле ничего не дала.
Как установить SVN?
0
в svn-е этот модуль и есть.

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

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

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

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

а у меня

/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

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

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

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

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

на
/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 #
0
Сообщениям об ошибках в опенсорсных-посикс приложениях надо верить (не то что вендузятские :)).

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

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

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

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

И еще, не подскажите, в чем может быть проблема. С LS 1.2 мигрировал на версию из SVN. Сфинкс индексные файлы создает, вроде бы все ок. Конфиг взял kruft'а, но штука в том, что корректно ищет только по комментарием, в выдаче топиков совершенно не те топики, что нужно выводятся. Как можно попытатся отладить данную проблему?
0
а в логах сфинкса точно все нормально? у меня была такая же проблема, там дело с путями была
+1
Именно, уже смекнул. Указал для topicIndex и commentsIndex один и тот же каталог, вот файлы друг друга и перезатирали.
0
Спасибо за статью, установил 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>
0
  • avatar
  • tab
  • 22 марта 2009, 20:39
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. Как переписать запрос для этого, я думаю, подсказывать нет необходимости =)

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

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

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


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

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

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

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

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

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

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

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

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

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

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

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

В чем тут косяк может быть?
0
в версии 0.9.9 :)
0
ну да. откатились назад и все заработало. но причина интересна.
0
Решил проблему следующим образом:
в 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 видимо ужесточили проверку. Я воткнул простую проверку и передаю только нужные атрибуты (не очень красиво, но главное понять в чем проблема)
+1
по сути вещей, то что я писал (в модуле) должно как раз и передавать только те экста-атрибуты в запрос, какие подходят под текущий контент-тайп
0
здесь проблема была в другом — при каждом виде поиска объект Sphinx был один и тот же, в итоге если искомое слово было и в топиках и в комментах, то это приводило к ошибке
0
тупанул с вопросом. простите ;)
0
0
багу в транке нашел —
из конфига модуля Серч:
$config['entity_prefix']  = '';
$config['sphinx']['host'] = 'localhost';
$config['sphinx']['port'] = '3312';

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

типа source site1Topics и site2Topics. соответственно с префиксами site1 и site2. по-дефолту префикс пустой
0
Вот спасибо добрый человек, буду пробовать воплотить.
+1
Я правильно понял, что нужно в 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 в сорсы и индексы?
0
Люди, кто знает как настроить подскажите пожалуйста.
+1
source…: ...2 означает, что… берет все настройки (наследует) перечисленные в ...2.

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

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

и потом все разделы индексов и сорсов сделать типа site1_topicsSource: site1_parentSource и site2_topicsSource: site1_parentSource для 1го и 2го сайтов. аналогично для всех разделов source и index
0
Минимум второй раз за последнее время вижу этот спам про лазерные граверы (свежий топик про чудо любви). Попробовал поискать — выяснил, что поиск не находит слова внутри ссылок. Или это потому, что новый топик и ещё не успел проиндексироваться или что-то в этом духе?
0
  • avatar
  • Wave
  • 27 февраля 2010, 12:28
теги вырезаются при индексировании
0
господа! Какую версию сфинкса ставить для 0.4.2, 2.0.1-beta (Apr 2011) или 0.9.9-release (Dec 2009)?
0
тестировалось только на 0.9.9
0
правильно ли я понял, что если доступа к машине у меня нет — я его установить не смогу? у меня виртуальный хостинг… на счёт наличия там компилятора c++ и программы make крайне не уверен, да и судя по всему мне до них не добраться будет
0
чисто судя по комментам дальнейшее направление понял. клянчить у хостера помощи)
0
У меня проблема такая: При выполнении 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
}
0
  • avatar
  • gas
  • 05 мая 2011, 13:19
А где во FreeBSD лежит Sphinx?

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

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

В какую сторону копать?
0
Только зарегистрированные и авторизованные пользователи могут оставлять комментарии.