Используется расширение
https://github.com/yiisoft/yii2-sphinx.
Конфиг sphinx:
source gg : site1
{
sql_query = SELECT id, title, name, address, phone FROM gg__restaurants
sql_attr_uint = id
sql_field_string = title
sql_field_string = name
sql_field_string = address
sql_field_string = phone
}
index siteSearch
{
source = gg
path = /var/www/verygood/data/www/gurman-gid.very-good.ru/sphinx/data/siteSearch
docinfo = extern
dict = keywords
mlock = 0
morphology = stem_enru
expand_keywords = 1
min_stemming_len = 1
min_word_len = 3
html_strip = 1
preopen = 1
min_infix_len = 1
#min_prefix_len = 3
index_exact_words = 1
}
Ищу так:
$query = new yii\sphinx\Query();
//$query->select('id, title');
$query->from('siteSearch');
$query->showMeta(true);
$query->match($this->sphinxMatchString($searchString));
$provider = new yii\sphinx\ActiveDataProvider([
'query' => $query,
'pagination' => [
'pageSize' => 10,
]
]);
Функция sphinxMatchString:
private function sphinxMatchString($query = [])
{
$matchString = [];
foreach ($query as $item) {
$exploded = explode(' ', $item);
foreach ($exploded as $value) {
$matchString[] = $value;
}
}
return '("' . implode('" | "', $matchString) . '")';
}
В результате если используется поисковая строка из одного или двух слов, то все работает. В противном случае ничего не находит. Подскажите в какую сторону копать? уже весь день сижу с этой проблемой, никак не могу понять что к чему