Поиск сфинкса - новичок
Мне удалось запустить Sphinx для индексации таблицы следующим образом: emp_id, emp_name, emp_department, emp_gender, emp_join_date, emp_notes
Как я могу использовать Sphinx для возврата результатов, где emp_gender "мужской"?
<?php
include ('sphinxapi.php');
$cl = new SphinxClient();
$cl->SetServer( "SPHINX2", 3312 );
$cl->SetMatchMode( SPH_MATCH_EXTENDED);
$result = $cl->Query( "male","sphinx_search");
?>
Выше возвращается мужчина в любом месте, включая поле emp_notes и поле emp_gender. Пожалуйста, посоветуйте, как мне ориентироваться на столбцы. Будет ли что-то вроде мужской работы @emp_gender? Он не возвращает результаты, как ожидалось
2 ответа
Вы должны использовать оператор поиска поля следующим образом:
$cl->Query( "@emp_gender male", "sphinx_search" );
Такую информацию, как пол лучше хранить в атрибутах. Вы можете изменить свой SQL-запрос на что-то. как это:
select if(emp_getnder = 'male', 1, 0) as gender,.....
Тогда вы можете использовать поле "пол" как целочисленный атрибут:
sql_attr_uint = gender
В вашем приложении:
$cl->setFilter('gender', array(1)); //select only male
$cl->Query("", "sphinx_search");
Это решение будет работать намного быстрее, чем фильтр по полю, и оно очень гибкое, потому что фильтры и запросы разделены.