在狮身人面像中自定义排序/按特定字段的匹配距离排序结果
问题描述:
我正在使用狮身人面像2.0。在狮身人面像中自定义排序/按特定字段的匹配距离排序结果
我想达到以下结果:
- 用户将与其他搜索字词输入标签,用户输入的标签相关联的文档应该来在上面,按距离排序。
- 之后,文件不包含按距离排序的标签。
我在做什么:
我不同的参数在同一时间使用像@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');