titronium
@titronium

Долго ли ищет Sphinx по индексу в 10 миллионов?

Здравствуйте!
Недавно появилась задача организовать поиск по 10 млн. записей в простой MySQL таблице. Поставил Sphinx, индекс был создан примерно в течении одной-двух минут - это хорошо. Подключил sphinxapi.php, создал простейший скрипт поиска по индексу. Все хорошо, но поиск в в 4-5 слов занимает порядка 1,8 секунд. Долго ли это?

Машина:
CPU: i5-2300 @ 2.80GHz
ОЗУ: 4Gb
HDD: Western Digital WD5000 - 500 Гб, 7200 rpm

Конфигурационный файл Sphinx:
source address_name
{
	type			   = mysql
	sql_host		   = localhost
	sql_user		   = root
	sql_pass		   = password
	sql_db		   = db_test
	sql_port		   = 3306
	sql_query		   = SELECT id, address FROM qa_table
	sql_attr_uint	   = id
	sql_query_info	   = SELECT address FROM qa_table WHERE id=$id
}

index address
{
	source		   = address_name
	path		           = /var/lib/sphinxsearch/data/address
	morphology        = stem_en
	charset_type       = utf-8
}

indexer
{
	mem_limit	   = 128M
}

searchd
{
	listen			= 9312
	read_timeout		= 5
	max_children		= 30
	pid_file		        = /var/run/sphinxsearch/searchd.pid
	max_matches		= 1000
	preopen_indexes	= 1
	unlink_old		= 1
	workers			= prefork
	binlog_path		= /var/lib/sphinxsearch/data
}


Индекс создается на базе простой таблицы из 2-х полей: id и address

Таблица заполнена ключевыми словами из адресов.
Пример адреса: 702 SW 8th St Bentonville, Arkansas United States

include('sphinxapi.php');
$cl = new SphinxClient();

$cl->SetServer( "localhost", 9312 );
$cl->SetMatchMode(SPH_MATCH_ANY);
$cl->SetLimits(0, 40);

$result = $cl->Query("8th St Bentonville Arkansas", "address");


Итого: в данном запросе к индексу время выполнения 1.8-2 секунды.
Если учитывать текущую машину и все эти нюансы - быстро ли это или медленно? Посоветуйте, как ускорить поиск?
Риал тайм индексы и другое пока не использую - вся задача в скорости поиска.
  • Вопрос задан
  • 2973 просмотра
Пригласить эксперта
Ответы на вопрос 2
opium
@opium
Просто люблю качественно работать
Это очень очень очень долго, должно быть быстро.
Ответ написан
SowingSadness
@SowingSadness
web-разработчик
А вы уверены, что поиск идёт долгий, а не передача информации от sphinx к php? Если вы получаете 40 записей каждая по 1Гб, то тут бутылочное горлышко в передаче такого количества данных.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы