Поиск сфинкса - новичок

Мне удалось запустить 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");

Это решение будет работать намного быстрее, чем фильтр по полю, и оно очень гибкое, потому что фильтры и запросы разделены.

Другие вопросы по тегам