поиск по тегам и порядок по рангу - PullRequest
0 голосов
/ 08 февраля 2011

tags-table имеет три столбца web, tags, rank

для этой таблицы включен ПОЛНЫЙ ПОИСК ТЕКСТА

Я могу искать по тегам и получить список сайтов по этому запросу

SELECT * FROM tags-table WHERE MATCH (tags) AGAINST ('search,searchengine,search,web' IN BOOLEAN MODE)

но я хочу упорядочить результат по рангу. как мне это сделать ??

Я тоже пробовал это, но это дает что-то еще.

SELECT * FROM tags-table WHERE MATCH (tags) AGAINST ('search,searchengine,search,web' IN BOOLEAN MODE) ORDER BY ABS(rank) 

по столбцу rank заполняется рейтингом для соответствующих сайтов. например, google получил rank 1, facebook hase получил rank2, а yahoo получил rank 4 для остальных сайтов.

tags-table




   web          |    tags                                       |     rank

-----------------------------------------------------------------------------------
    google.com   |search,google,searchengine,engine,web          |     1
    facebook.com |facebook,social,networking,friends,community   |     2
    youtube.com  |video,youtube,videos,entertainment,media       |     3
    yahoo.com    |yahoo,search,email,news,searchengine           |     4

1 Ответ

0 голосов
/ 08 февраля 2011

Волшебной колонки нет rank.Но вы можете вычислить релевантность (или оценить, как вы ее называете) следующим образом:

SELECT 
    *,
    MATCH (tags) AGAINST ('search searchengine search web') AS relevance
FROM 
    tags-table 
WHERE 
    MATCH (tags) AGAINST ('+search +searchengine +search +web' IN BOOLEAN MODE) 
ORDER BY 
    relevance DESC

Обратите внимание, что первый MATCH AGAINST не выполняется IN BOOLEAN MODE.Это потому, что IN BOOLEAN MODE почти всегда возвращает 1.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...