sql >> Databáze >  >> NoSQL >> MongoDB

Fulltextové vyhledávání MongoDB vs Lucene?

Aniž bych se zabýval dlouhým tématem, které by se pravděpodobně nehodilo pro programátorské fórum, pokusím se to v podstatě pokrýt, ale přesto se pokusím pokrýt všechny body.

Hlavní věc, kterou je třeba vzít v úvahu, když skočíte do širokého srovnání, je toto:"Jak se fulltextové vyhledávání relačních databází 'XYZ' staví proti Lucene" .

Takže pokud to zvážíte a máte zkušenosti s vestavěnými „fulltextovými“ funkcemi těchto produktů, pak jsou to ta jablka, která byste měli porovnávejte s „plnotextovými“ jablky MongoDB.

Stručně řečeno, MongoDB nabízí základní funkce plného textu, které se příliš neliší od těch, které najdete v relačních produktech. Jak je uvedeno v a :) , zařízení jsou nová, ale lepší než to, co tam bylo předtím, což nebylo nic.

Na b :) , Lucene a deriváty/protějšky (Solr / ElasticSearch atd.) by měly být považovány za úplně jiné zvíře. Kde potřebujete pokročilá tokenizace a stemming, vestavěná zařízení pro „Více podobných“ a počet fazet na vyhledávání. V těchto případech je samostatný produkt nezbytnou nutností.

Samozřejmě existuje několik řešení pro indexování dat z obchodů MongoDB v Lucene atd., a dokonce ani přizpůsobení tohoto procesu není těžké. Ale udržuje další pohyblivou část vaší infrastruktury.

Takže to opravdu nevnímám jako potřebu srovnávat Textové vyhledávání MongoDB s Lucene, protože koneckonců existují, aby dělaly různé věci, jde jen o to, co potřebujete pro vaši aplikaci. Vyberte si řešení, které je pro vás nejlepší.

Jediné, co je třeba dodat, je, že rodina Lucene (a odvozená) jsou skvělé produkty. Nebojte se je vyzkoušet, alespoň zhodnotit. Pointa z dřívějška je, že tam je mnohem větší síla než jakékoli "standardní vyhledávání textu v databázi". Navíc admin a křivka učení obecně „není tak těžké, jak si myslíte“. Zahrajte si, možná to stojí za implementaci.



  1. MongoDB $atanh

  2. Spring MongoDB Repository funguje pouze v některých případech

  3. Výpočtový dotaz Mongodb--kumulativní násobení

  4. Redis (ioredis) – Nelze zachytit chybu připojení, aby bylo možné je elegantně zvládnout