Sterx
ну смотри вот мой конфиг с использованием поля orientation
source cjnet_search_straight
{
type = mysql
sql_host = xxxxx
sql_user = cjnet_search
sql_pass = xxxxx
sql_db = cjnet_search
sql_port = 3306 # optional, default is 3306
sql_query = SELECT contentID, title, description, niches, tubeTitle, data, duration FROM content WHERE status = 'active' AND orientation = 'straight'
sql_attr_uint = data
sql_attr_uint = duration
}
index cjnet_search_index_straight
{
source = cjnet_search_straight
path = /var/sphinx/cjnet_search_index_straight
docinfo = extern
morphology = stem_en # or stem_ru for example
}
source cjnet_search_gay
{
type = mysql
sql_host = чччччч
sql_user = cjnet_search
sql_pass = xxxxxxxxxx
sql_db = cjnet_search
sql_port = 3306 # optional, default is 3306
sql_query = SELECT contentID, title, description, niches, tubeTitle, data, duration FROM content WHERE status = 'active' AND orientation = 'gay'
sql_attr_uint = data
sql_attr_uint = duration
}
index cjnet_search_index_gay
{
source = cjnet_search_gay
path = /var/sphinx/cjnet_search_index_gay
docinfo = extern
morphology = stem_en # or stem_ru for example
}
source cjnet_search_shemale
{
type = mysql
sql_host = xxxxx
sql_user = cjnet_search
sql_pass = xxxxx
sql_db = cjnet_search
sql_port = 3306 # optional, default is 3306
sql_query = SELECT contentID, title, description, niches, tubeTitle, data, duration FROM content WHERE status = 'active' AND orientation = 'shemale'
sql_attr_uint = data
sql_attr_uint = duration
}
index cjnet_search_index_shemale
{
source = cjnet_search_shemale
path = /var/sphinx/cjnet_search_index_shemale
docinfo = extern
morphology = stem_en # or stem_ru for example
}
поскольку флага orientation у тебя нет, его нужно либо создать (перебрав записи на наличие в title соответствующих кеев - те что не подойдут ни под gay ни под shemale идут автоматом как straight (например дефолтное значение orientation))
или
для помещения в нужный индекс сфинкса переделать запросы его конфига используя в выборках встроенные механизмы типа like или FULLTEXT search
вместо допоустим запроса в шмелином индексе
SELECT contentID, title, description, niches, tubeTitle, data, duration FROM content WHERE status = 'active' AND orientation = 'shemale'
использовать запрос
SELECT contentID, title, description, niches, tubeTitle, data, duration FROM content WHERE status = 'active' AND (title LIKE '%shemale%' OR title LIKE '%ladyboy%'
надо понимать что пиздец как неприятно мускулю, полнотекстовый не буду приводить - их в сети шквал примеров.
я бы все таки прописал признак orientation на твоем месте
и использование
$this->sphinxIndexName = 'cjnet_search_index';
if($this->routeValues->orientation != 'all'){$this->sphinxIndexName .= '_' . $this->routeValues->orientation;}
$sphinx = new SphinxClient();
$sphinx->SetServer(SPHINX_IP, SPHINX_PORT);
$sphinx->SetMatchMode(SPH_MATCH_ANY);
switch($this->routeValues->order){
case 'data':
$sphinx->SetSortMode(SPH_SORT_ATTR_DESC,'data');
break;
case 'duration':
$sphinx->SetSortMode(SPH_SORT_ATTR_DESC,'duration');
break;
default:
$sphinx->SetSortMode(SPH_SORT_RELEVANCE);
break;
}
if($this->redis->exists(NICHE . $this->sphinxQuery)){
$sphinx->SetFieldWeights(array ('niches' => 20, 'title' => 10));
}elseif($this->redis->exists(TUBE . $this->sphinxQuery)){
$sphinx->SetFieldWeights(array ('tubeTitle' => 20, 'title' => 10));
}else{
$sphinx->SetFieldWeights(array ('niches' => 10, 'title' => 20));
}
$limit = $this->settings->searchMoviesPerPage;
$offset = (($this->routeValues->page * $this->settings->searchMoviesPerPage) - $this->settings->searchMoviesPerPage);
$sphinx->SetLimits($offset,$limit,($offset+$limit));
$resultSphinx = $sphinx->Query($this->sphinxQuery, $this->sphinxIndexName);
как то так
или 1 индекс с атрибутами как выше писали