Здравствуйте,
у нас имеется большая база поисковых запросов, с некоторых пор в mysql стало невозможно пользоваться простым запросом типа like '%keyword%', но он нас полностью удовлетворял
Решили все залить в сфинкс и попробовать оптимизировать, все отлично кроме результатов, которые не совпадают с нашими ожиданиями, например:
Если искать слово "сло*", на первых местах выскакивают все ошибочные запросы где содержится именно "сло", хотя есть куча популярных слов типа "слон", "слово"
Вот наш конфиг:
source suggest
{
type = mysql
sql_host = ...
sql_user = ...
sql_pass = ...
sql_db = ...
sql_port = ...
sql_query_pre = SET NAMES utf8
sql_query_pre = SET CHARACTER SET utf8
sql_query_pre = SELECT @id := 0
sql_query = SELECT @id := @id + 1, query, total_docs, total_files, total, UNIX_TIMESTAMP(added_date) as post_date, amount FROM search_keywords where total > 0
sql_attr_timestamp = post_date
sql_attr_bigint = total
sql_attr_bigint = total_docs
sql_attr_bigint = total_files
sql_attr_bigint = amount
sql_field_string = query
}
index xg_suggest
{
source = suggest
path = /var/lib/sphinx/suggest
docinfo = extern
morphology = stem_enru
min_word_len = 2
min_prefix_len = 2
index_exact_words = 1
}
и настройки в php:
$sphinx->SetMatchMode (SPH_MATCH_EXTENDED);
$sphinx->SetRankingMode(SPH_RANK_BM25);
$sphinx->SetFieldWeights(array ('query' => 10));
$sphinx->SetSortMode(SPH_SORT_ATTR_DESC, 'amount');
$query = "* ^keywor*";
$result = $sphinx->Query($query, 'xg_suggest');
То есть в поиске по "keywor*" нет результатов со словами "keyword"
Версия сфинкса
sphinx-2.2.11-1