Mysql матч против альтернативы - PullRequest
0 голосов
/ 09 октября 2009

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

Матч против не дает мне такой большой контроль.

Ответы [ 2 ]

2 голосов
/ 09 октября 2009

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

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

Конечно, вы можете точно настроить все это, не просто набрав 0 или 1 для каждого критерия.

0 голосов
/ 05 февраля 2012
select
  * 
from
  myTable
order by
(
    (itemdate='2009-10-09') +
    (title like '%keyword%') +
    (text like '%keyword%') +
    (criteria4) +
    (criteria5)
)

Это прекрасно работает.

...