Mysql
 sql >> база данни >  >> RDS >> Mysql

Най-добрият начин да направите претеглено търсене в множество полета в mysql?

Вероятно този подход за извършване на претеглено търсене/резултати е подходящ за вас:

SELECT *,
    IF(
            `name` LIKE "searchterm%",  20, 
         IF(`name` LIKE "%searchterm%", 10, 0)
      )
      + IF(`description` LIKE "%searchterm%", 5,  0)
      + IF(`url`         LIKE "%searchterm%", 1,  0)
    AS `weight`
FROM `myTable`
WHERE (
    `name` LIKE "%searchterm%" 
    OR `description` LIKE "%searchterm%"
    OR `url`         LIKE "%searchterm%"
)
ORDER BY `weight` DESC
LIMIT 20

Той използва подзаявка за избор, за да предостави теглото за подреждане на резултатите. В този случай три полета, търсени в, можете да посочите тегло за поле. Вероятно е по-евтино от съюзите и вероятно един от по-бързите начини само в обикновения MySQL.

Ако имате повече данни и се нуждаете от по-бързи резултати, можете да обмислите използването на нещо като Sphinx или Lucene.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Актуализирайте таблицата от друга таблица и друга база данни

  2. Highcharts многоредови графики

  3. Ремонтирайте всички маси наведнъж

  4. Как да получите стойност от една колона на таблицата, когато две колони с едно и също име съществуват в sql присъединяване

  5. Как да изтриете дублирани редове и да актуализирате таблицата