仅在选定列中的Sphinx搜索短语

时间:2014-01-30 12:30:34

标签: php sphinx

我尝试用Sphinx搜索

search --index goods "new @category_id 711"
由于" @category_id 711"

以搜索错误结束 但它应该是正确的方式,如何在精确列中搜索 见http://sphinxsearch.com/docs/current.html#extended-syntax

但是在sphinx.conf中是

 sql_query = SELECT id, name, category_id FROM ...

 sql_attr_uint = category_id

并且不想要设置

 $sphinx->setFilter('category_id', array(711), false);

因为它仅限制类别711的结果

我需要为category_id添加权重,并在名称

中搜索其余文本
$sphinx->SetFieldWeights(array('name' => 1000, 'category_id' => 250));

但搜索" 711"不应该在"名称"

1 个答案:

答案 0 :(得分:0)

这里发生的事情很少!

'搜索'命令默认搜索模式,未扩展。因此,如果使用扩展语法,则必须专门启用扩展模式。添加-e


在配置文件中,您已将其设为属性。 @field语法中无法访问属性。即它们不是全文索引,因此您无法通过它们进行查询。

因此,如果想要在搜索查询中,需要创建一个字段。 (不是属性)。


然后可以进行查询new @category_id 711 - 但这意味着查询必须与new@category_id 711匹配,因此它的行为与setFilter完全相同。

如果您只想“推广”该类别,需要重新排列查询,以便它只匹配“新”,但包含类别位,以便您可以影响排名

(new) | (new @category_id 711)
例如,

但是你还需要改变RANKING模式,以便改变排名。用各种模式进行实验来决定你喜欢哪种模式。 SPH_RANKING_WORDCOUNT,是最基本的,但可能不够好。