我正在使用狮身人面像 2.0。
我想达到以下结果:
- 用户将输入带有其他搜索词的标签,与用户输入标签相关联的文档应该排在最前面,按距离排序。
- 之后,文档不包含按距离排序的那些标签。
我在做什么:
我正在使用@name、@tag、@streetname 等同时搜索不同的参数,所以我在下面使用
$cl->SetMatchMode(SPH_MATCH_EXTENDED);
并使用按距离对结果进行排序$cl->SetSortMode(SPH_SORT_EXTENDED, '@geodist asc');
标签字段可以包含多个值,我正在使用 OR 运算符来获得所需的结果。
如果我只搜索@tags,那么我就能达到我提到的要求。但是如果用户输入是@tag food|dinner @city london @name tax
然后结果名称为:London Taxi,街道:London 位于顶部或其他位置,按 lat-long 打破排序顺序。因为伦敦有两个参数。我只想按标签排序,不想在排序顺序中包含其他搜索词的权重。
排名模式为:$cl->setRankingMode(SPH_RANK_PROXIMITY_BM25);
有什么建议可以解决这个问题吗?或任何其他方式来实现它。
非常感谢。