2012-06-13 52 views
0

我正在使用獅身人面像2.0在獅身人面像中自定義排序/按特定字段的匹配距離排序結果

我想達到以下結果:

  1. 用戶將與其他搜索字詞輸入標籤,用戶輸入的標籤相關聯的文檔應該來在上面,按距離排序。
  2. 之後,文件不包含按距離排序的標籤。

我在做什麼:

我不同的參數在同一時間使用像@name,@tag,@streetname etc.so搜索我使用下面

$cl->SetMatchMode(SPH_MATCH_EXTENDED);

並按距離排序結果使用$cl->SetSortMode(SPH_SORT_EXTENDED, '@geodist asc');

標記字段可以包含多個值我usin g OR運算符以獲得期望的結果。

如果我只搜索@tags,那麼我能夠達到我提到的要求。但如果用戶輸入的是@tag食品|晚餐@城市倫敦@name出租車

然後結果與名稱:倫敦出租車,街道:倫敦出現在頂部或其他一些位置打破排序順序經緯度。因爲倫敦有兩個參數。我只是想按標籤排序,不想在排序順序中包含其他搜索詞的權重。

排序模式時:$cl->setRankingMode(SPH_RANK_PROXIMITY_BM25);

任何建議,以解決這個問題?或任何其他方式來實現它。

很多謝謝。

回答

1

我認爲解決這個問題的方法是在標記字段上安排匹配,使其排在更高的位置。將不得不測試,但像這樣...

$cl->setFieldWeights(array('tags' => 100000)); 

$cl->setSelect("*,IF(@weight>100000,1,0) AS matchtags"); 

$cl->SetSortMode(SPH_SORT_EXTENDED, 'matchtags DESC, @geodist ASC');