我尝试用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"不应该在"名称"
答案 0 :(得分:0)
这里发生的事情很少!
'搜索'命令默认搜索模式,未扩展。因此,如果使用扩展语法,则必须专门启用扩展模式。添加-e
在配置文件中,您已将其设为属性。 @field语法中无法访问属性。即它们不是全文索引,因此您无法通过它们进行查询。
因此,如果想要在搜索查询中,需要创建一个字段。 (不是属性)。
然后可以进行查询new @category_id 711
- 但这意味着查询必须与new
和@category_id 711
匹配,因此它的行为与setFilter完全相同。
如果您只想“推广”该类别,需要重新排列查询,以便它只匹配“新”,但包含类别位,以便您可以影响排名
(new) | (new @category_id 711)
例如,。
但是你还需要改变RANKING模式,以便改变排名。用各种模式进行实验来决定你喜欢哪种模式。 SPH_RANKING_WORDCOUNT,是最基本的,但可能不够好。