Php 属性集合中的Sphinx搜索

Php 属性集合中的Sphinx搜索,php,sphinx,Php,Sphinx,在属性集合中是否有一种在Sphinx中搜索的方法 我有一个财产(如在建筑物中,而不是属性),在其他属性中,有一个设施集合,例如游泳池、wifi 每个属性都有多个功能如果您想知道,您必须使用“multi”属性,请参阅随附的xmlpipe2 doc+php搜索示例 <?xml version="1.0" encoding="UTF-8"?> <sphinx:docset> <sphinx:schema> <sphinx:field name="capa

在属性集合中是否有一种在Sphinx中搜索的方法

我有一个财产(如在建筑物中,而不是属性),在其他属性中,有一个设施集合,例如游泳池、wifi


每个属性都有多个功能

如果您想知道,您必须使用“multi”属性,请参阅随附的xmlpipe2 doc+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>

对于这种情况,最好使用

在应用程序中:

$cl->SetFilter('facilities', array(1, 2, 3));
$cl->Query();
$cl->Query("@facilities pool");
但是,可以避免使用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->SetFilter('facilities', array(1, 2, 3));
$cl->Query();
$cl->Query("@facilities pool");

在我的例子中,将MVA属性声明为:

<facilities>
   <attr>23</attr>
   <attr>5</attr>
   <attr>2</attr>
   <attr>1</attr>
</facilities>

23
5.
2.
1.
没用。但当我把它做成这样:

<facilities>23,5,2,1</facilities>
23,5,2,1
…它起作用了!;)

(斯芬克斯2.0.6-id64-release(r3473))