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

Сравнение на пълнотекстова търсачка - Lucene, Sphinx, Postgresql, MySQL?

Хубаво е да видя някой да се е включил за Lucene - защото нямам представа за това.

Сфинкса, от друга страна, познавам доста добре, така че да видим дали мога да бъда полезен.

  • По подразбиране е класирането по уместност на резултатите. Можете да настроите свое собствено сортиране, ако желаете, и да дадете на конкретни полета по-високи тежести.
  • Скоростта на индексирането е супер бърза, защото се свързва директно с базата данни. Всяко забавяне ще дойде от сложни SQL заявки и неиндексирани външни ключове и други подобни проблеми. Никога не съм забелязал забавяне в търсенето.
  • Аз съм човек от Rails, така че нямам представа колко лесно е да се приложи с Django. Въпреки това има API на Python, който идва с източника на Sphinx.
  • Демонът на услугата за търсене (searchd) използва доста малко памет - и можете да зададете ограничения за колко памет процесът на индексиране също използва.
  • Мащабируемостта е мястото, където познанията ми са по-скребни – но е достатъчно лесно да копирам индексни файлове на множество машини и да изпълнявам няколко searchd демона. Общото впечатление, което получавам от другите обаче, е, че е доста добър при голямо натоварване, така че мащабирането му на множество машини не е нещо, с което трябва да се занимаваме.
  • Няма поддръжка за „имахте ли предвид“ и т.н. – въпреки че това може да се направи с други инструменти достатъчно лесно. Сфинксът прави думи с основата, въпреки че използва речници, така че „шофиране“ и „шофиране“ (например) ще се считат за еднакви при търсенията.
  • Sphinx обаче не позволява частични актуализации на индекса за полеви данни. Общият подход към това е да се поддържа делта индекс с всички скорошни промени и да се индексира отново след всяка промяна (и тези нови резултати се появяват в рамките на секунда или две). Поради малкото количество данни това може да отнеме няколко секунди. Все пак ще трябва редовно да индексирате основния набор от данни (въпреки че колко редовно зависи от променливостта на вашите данни - всеки ден? всеки час?). Все пак бързите скорости на индексиране поддържат всичко това доста безболезнено.

Нямам представа доколко това е приложимо за вашата ситуация, но Евън Уивър сравни няколко от опциите за търсене на Common Rails (Sphinx, Ferret (пристанище на Lucene за Ruby) и Solr), провеждане на някои бенчмаркове. Може да е полезно, предполагам.

Не съм проникнал в дълбините на пълнотекстово търсене на MySQL, но знам, че не се конкурира нито по скорост, нито по функции със Sphinx, Lucene или Solr.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Данните с отворен код нарастват:Избор на MySQL, NoSQL или и двете

  2. Заявката SELECT връща 1 ред от всяка група

  3. MySQL функция за намиране на броя на работните дни между две дати

  4. MySQL CHAR() срещу T-SQL CHAR():Каква е разликата?

  5. Android JDBC не работи:ClassNotFoundException на драйвера