sql >> Databasteknik >  >> RDS >> Mysql

Jämförelse av fulltext sökmotor - Lucene, Sphinx, Postgresql, MySQL?

Kul att se att någon pratar om Lucene - för det har jag ingen aning om.

Sfinx, å andra sidan, känner jag ganska väl, så låt oss se om jag kan vara till någon hjälp.

  • Rankning för resultatrelevans är standard. Du kan ställa in din egen sortering om du vill, och ge specifika fält högre viktning.
  • Indexeringshastigheten är supersnabb eftersom den talar direkt till databasen. All långsamhet kommer från komplexa SQL-frågor och oindexerade främmande nycklar och andra sådana problem. Jag har aldrig märkt någon långsam sökning heller.
  • Jag är en Rails-kille, så jag har ingen aning om hur lätt det är att implementera med Django. Det finns dock ett Python API som följer med Sphinx-källan.
  • Söktjänstdemonen (searchd) har ganska låg minnesanvändning - och du kan sätta gränser för hur mycket minne indexeringsprocessen använder också.
  • Skalbarhet är där min kunskap är mer skissartad - men det är lätt nog att kopiera indexfiler till flera maskiner och köra flera sökta demoner. Det allmänna intrycket jag får från andra är dock att det är ganska bra under hög belastning, så att skala ut det över flera maskiner är inte något som behöver hanteras.
  • Det finns inget stöd för 'menade-du', etc - även om dessa kan göras med andra verktyg tillräckligt enkelt. Sphinx stammar ord genom att använda ordböcker, så "körning" och "kör" (till exempel) skulle betraktas som samma i sökningar.
  • Sphinx tillåter dock inte partiella indexuppdateringar för fältdata. Det vanliga tillvägagångssättet för detta är att upprätthålla ett deltaindex med alla de senaste ändringarna, och indexera om detta efter varje förändring (och de nya resultaten visas inom en eller två sekunder). På grund av den lilla mängden data kan detta ta några sekunder. Du kommer fortfarande att behöva indexera om huvuduppsättningen regelbundet (även om hur regelbundet beror på volatiliteten i dina data - varje dag? varje timme?). De snabba indexeringshastigheterna håller dock allt detta ganska smärtfritt.

Jag har ingen aning om hur tillämpligt på din situation detta är, men Evan Weaver jämförde några av Common Rails sökalternativ (Sphinx, Ferret (en hamn i Lucene för Ruby) och Solr), kör några riktmärken. Kan vara användbart antar jag.

Jag har inte analyserat djupet av MySQL:s fulltextsökning, men jag vet att den inte konkurrerar hastighetsmässigt eller funktionsmässigt med Sphinx, Lucene eller Solr.



  1. AOL/J Setup Test Suite

  2. Skapa en relation i SQL Server 2017

  3. Hur kan jag släppa alla tabeller i en PostgreSQL-databas?

  4. Köra ett MariaDB Galera-kluster utan verktyg för containerorkestrering:Del ett