2011-01-31 74 views
1

嘿家伙,即时通讯尝试以我想通过sphinx 0.99的方式排列我的结果,但它不工作。使用SPH_MATCH_ANY的狮身人面像忽略SetFieldWeights和SetSortMode

即时通讯目前采用这种

$cl->SetMatchMode (SPH_MATCH_ANY); 
$cl->SetRankingMode (SPH_RANK_PROXIMITY_BM25); 
$cl->SetFieldWeights (array ("item_title"=>100,"item_publish_date"=>99)); 
$cl->SetSortMode (SPH_SORT_EXTENDED , "@weight DESC,item_publish_date DESC"); 
$cl->SetLimits(0, 330); 

从而牵引了所有的结果,但它完全忽略了item_publish_date值。

如果我用SPH_MATCH_ANY的SPH_MATCH_BOOLEAN isntead,它显示我想要的顺序结果,但随后将结果限制太多,因为类似的项目将被完全忽略,这就是为什么我需要使用SPH_MATCH_ANY展现大部分结果。

所以我的问题是,我怎样才能在item_publish_date中使用SPH_MATCH_ANY?

回答

0

我认为item_publish_date不是一个文本字段,所以你不需要在SetFieldWeights方法中使用它,因为它没有任何意义。第二,SPH_MATCH_ANY排名计算权重使用额外的计数匹配的单词,不仅匹配。这就是为什么你需要做一些测试,并在不同的搜索中观察weight参数。

这里有一些东西阅读关于weighting in Sphinx