在狮身人面像中自定义排序/按特定字段的匹配距离排序结果

问题描述:

我正在使用狮身人面像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);

任何建议,以解决这个问题?或任何其他方式来实现它。

很多谢谢。

我认为解决这个问题的方法是在标记字段上安排匹配,使其排在更高的位置。将不得不测试,但像这样...

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

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

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