Здравствуйте!
Недавно появилась задача организовать поиск по 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 секунды.
Если учитывать текущую машину и все эти нюансы - быстро ли это или медленно? Посоветуйте, как ускорить поиск?
Риал тайм индексы и другое пока не использую - вся задача в скорости поиска.