2011-02-01 1 views
0

: EMP_ID、EMP_NAME、emp_department、emp_gender、emp_join_dateは、「私はemp_genderがどこにあるか、結果を返すためにスフィンクスを使用するにはどうすればよいスフィンクス検索 - 私はスフィンクスには、次のとインデックスにテーブルを実行し得るために管理している初心者

をemp_notes男性"?

<?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男性の仕事のようなものでしょうか?

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

phpには、スフィンクスpecl拡張があります。 IMHO - .php apiラッパーより高速です。 http://php.net/manual/en/book.sphinx.php – ThatGuy

答えて

2

を期待ように、それはあなたがこのようfield search operatorを使用する必要があり、結果を返しません。 あなたはSQLクエリをsmthに変更できます。あなたのapppで

sql_attr_uint = gender 

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

が次にあなたが整数attribuiteとして '性別' フィールドを使用することもできます。このよう

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

このソリューションは、フィールドでフィルタその後、はるかに高速に動作します フィルタとクエリが分離されているので、柔軟性があります。

+0

ありがとう、私はこれを試しましたが、 $ cl-> Query( "@emp_gender male"、 "sphinx_search"); と $ cl-> Query( "male"、 "sphinx_search"); 同じ結果を返します。設定で何かする必要はありますか? – Pasta

+0

私は愚かなバニーです、ありがとうrik! – Pasta

1

性別などの情報の属性に格納するために、より良い:

関連する問題