2011-02-01 6 views
0

мне удалось получить Sphinx работает индексировать таблицу со следующим: emp_id, emp_name, emp_department, emp_gender, emp_join_date, emp_notesпоиска Sphinx - новичку

Как использовать 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? Он не возвращает результаты, как ожидается,

+0

php имеет расширение sphinx pecl. ИМХО - это быстрее, чем .php api wrapper. http://php.net/manual/en/book.sphinx.php – ThatGuy

ответ

2

Вы должны использовать field search operator так:

$cl->Query("@emp_gender male", "sphinx_search"); 
+0

Спасибо, я попробовал это, но $ cl-> Query ("@emp_gender male", "sphinx_search"); и $ cl-> Query ("male", "sphinx_search"); вернуть тот же набор результатов. Есть ли что-нибудь, что мне нужно сделать в конфиге? – Pasta

+0

Я глупый кролик, спасибо, рик! – Pasta

1

Такая информация, как пол лучше хранить в атрибутах. Ваш SQL-запрос может быть изменен. как это:

select if(emp_getnder = 'male', 1, 0) as gender,..... 

Затем вы можете использовать поле 'гендер' в качестве целого attribuite:

sql_attr_uint = gender 

В вашем appp:

$cl->setFilter('gender', array(1)); //select only male 
$cl->Query("", "sphinx_search"); 

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

Смежные вопросы