属性のコレクション内でSphinxを検索する方法はありますか?Sphinxで属性コレクション内を検索
私は他の属性の中でも施設のコレクションを持っている(建物のように、属性ではない)プロパティを持っています。プール、無線LAN。
各プロパティは
属性のコレクション内でSphinxを検索する方法はありますか?Sphinxで属性コレクション内を検索
私は他の属性の中でも施設のコレクションを持っている(建物のように、属性ではない)プロパティを持っています。プール、無線LAN。
各プロパティは
はそれを考え出した複数の施設を持っている、あなたは "マルチ" 属性を使用する必要があり、付属のxmlpipe2ドキュメント+ PHPの検索例を参照してください
<?xml version="1.0" encoding="UTF-8"?>
<sphinx:docset>
<sphinx:schema>
<sphinx:field name="capacity"/>
<sphinx:field name="region"/>
<sphinx:field name="facilities"/>
<sphinx:attr name="capacity" type="int"/>
<sphinx:attr name="region" type="int"/>
<sphinx:attr name="facilities" type="multi"/>
</sphinx:schema>
<sphinx:document id="94">
<capacity>37</capacity>
<region>12</region>
<facilities>
<attr>23</attr>
<attr>5</attr>
<attr>2</attr>
<attr>1</attr>
</facilities>
</sphinx:document>
</sphinx:docset>
PHP検索:
$sp = new SphinxClient();
$sp->SetMatchMode(SPH_MATCH_ALL);
$sp->SetArrayResult(true);
$sp->SetServer('localhost', 3312);
$sp->SetFilter('facilities', array(23, 5));
$sp->Query();
この場合、Multi value attributesを使用することをお勧めします。
アプリケーションでsql_attr_multi = uint facilities from query; \
SELECT id, facility_id FROM facilities
:
$cl->SetFilter('facilities', array(1, 2, 3));
$cl->Query();
しかし、あなたはMVAの属性を使用して回避することができます。 SQLクエリの単純連結各施設:アプリケーションで
sql_query = select group_concat(facilities SEPARATOR ' ') as facilties \
from building b inner join facilities f on (b.facility_id = f.id)
:私の場合は
$cl->Query("@facilities pool");
としてMVA属性を宣言する:
<facilities>
<attr>23</attr>
<attr>5</attr>
<attr>2</attr>
<attr>1</attr>
</facilities>
は動作しませんでした。しかし、私はそれが好きで作るとき:
<facilities>23,5,2,1</facilities>
を...それは!;作品)
(スフィンクス2.0.6-id64リリース(r3473))