2009-10-09 4 views
0

Мне нужен поиск с алгоритмом релевантности, а база данных - mysql. Мне нужно отсортировать результаты по дате, если ключевое слово находится в заголовке или нет, количество явлений в ключевом слове в тексте и т. Д.Сравнение Mysql с альтернативой

Матч против не дает мне такого контроля.

ответ

2

Что-то, как это будет делать то, что вы хотите:

select 
    * 
from 
    myTable 
order by 
    sum 
    (
    itemdate='2009-10-09', 
    title like '%keyword%', 
    text like '%keyword%', 
    criteria4, 
    criteria5 
) 
  • Каждый критерий возвращает 0, если ложно, и 1, если оно истинно.
  • Вы суммируете каждый из них и заказываете результат.
  • Строки, которые имеют наиболее подходящие критерии, будут сверху.

Вы можете закончить все это, конечно, не только имея 0 или 1 за каждый критерий.

-3
select 
    * 
from 
    myTable 
order by 
(
    (itemdate='2009-10-09') + 
    (title like '%keyword%') + 
    (text like '%keyword%') + 
    (criteria4) + 
    (criteria5) 
) 

Это работает очень здорово.

+0

Извините, но 'SELECT *' без предложения 'WHERE' или' HAVING' не является моей идеей «отлично работает» – Andrew

Смежные вопросы