SELECT id, title, WEIGHT() AS w
FROM indexnews
WHERE MATCH('@title \"call of\"/0.3')
ORDER BY w DESC, time DESC
LIMIT 0, 10
OPTION ranker=proximity_bm25
Как сделать, чтобы в выборку попадали все записи что в таблице, а приоритет был у тех, у которых есть совпадения по MATCH, остальные с низу.
Данный запрос работает так, что выдает только те строчки в которых нашел совпадения.
Их всего 3, на выходе 3, вместо 10.
Добавьте в каждый документ спец. слово, в полнотекстовый запрос добавьте | <это спец. слово>. Таким образом в крайнем случае будет совпадение по этому слову.
SELECT id, title, WEIGHT() AS w
FROM indexnews
WHERE MATCH('@title \"call of\"/0.3 | @title_prev \" \"/0.0')
ORDER BY w DESC, time DESC
LIMIT 0, 10
OPTION ranker=proximity_bm25
SELECT id, title, WEIGHT() AS w
FROM indexnews
WHERE MATCH('@title \"call of\"/0.3 | < >')
ORDER BY w DESC, time DESC
LIMIT 0, 10
OPTION ranker=proximity_bm25
Не понимаю, у меня не работает. Как верно прописать данный WHERE MATCH('@title \"call of\"/0.3 | < >')
Под спец. словом я имел в виду любое слово, например dskjhdkjshdjksh4k4h23kjh342j
Т.к. оно будет в каждом документе, то добавление | dskjhdkjshdjksh4k4h23kjh342j в поиск гарантирует, что каждый документ найдётся.