【发布时间】:2019-07-31 09:54:25
【问题描述】:
我使用布尔全文搜索从数据库列中搜索单词。 我想获得与我的记录完全匹配的记录,还包括通配符搜索。我得到了正确的结果,但我想首先通过完全匹配来设置该结果的顺序。有没有可能的方法来实现这一点?
我还想对每个单词进行搜索并按相关性获取记录。
我已尝试使用以下查询,但它不起作用,因为它给了我错误的记录排名。
SELECT
id,
search_tags,
MATCH(search_tags) AGAINST(REPLACE(concat("'car'"," ")," ","* ") IN BOOLEAN MODE) AS relevance_rank
FROM
images
WHERE
MATCH(search_tags) AGAINST(REPLACE(concat("'car'"," ")," ","* ") IN BOOLEAN MODE)
ORDER BY relevance_rank DESC;
我希望查询的输出是
id search_tag relevance_rank
11 car,cards,food,code 2.1669161319732666
12 car,water,sky 2.1669161319732665
13 carrier,food,drink 2.1669161319732664
,但实际输出是这样的
id search_tag relevance_rank1
11 carrier,food,drink 2.1669161319732666
12 car,cards,food,code 2.1669161319732666
13 car,water,sky 2.1669161319732666
【问题讨论】:
-
我认为你应该使用 laravel 侦察兵:laravel.com/docs/5.8/scout
-
@DharmeshRakholia - 但我已经使用过全文搜索,Laravel Scout 使用相同的搜索。我没有使用 MVC 结构,因此无法继续使用 Laravel Scout。你还有什么办法吗?
-
@JorisJ1 - 我的问题不仅是为了秩序,而且我也对同等级的困惑。你知道为什么它会获得相同的排名吗?
-
抱歉,我删除了重复的标志。不,我还没有答案,但我会在今天晚些时候再看一遍。