5

Lire Queryrecherche plein texte (Postgres) Vs recherche élastique

Dans Posgres, indexation plein texte permet documents à prétraitées et un index sauvegardé pour une recherche rapide plus tard. Le prétraitement comprend:

  • Analyse de documents en jetons.

  • Conversion de jetons en lexèmes.

  • Stockage des documents pré-traités optimisés pour la recherche.


de type tsvector est utilisé dans Postgres pour la recherche en texte intégral

de type tsvector est différent de celui text type dans les aspects ci-dessous:

  • Elimine cas. Majuscules/minuscules de cas sont identiques

  • Enlève arrêter les mots (et, ou, non, elle, lui, et des centaines d'autres) -Parce ces mots ne sont pas pertinents pour la recherche de texte

  • Remplace synonymes et prend des tiges de mot (elephant ->eleph). Dans le catalogue de texte intégral, il n'a pas le mot elephant mais le mot elep.

  • peut (et doit) être indexé avec GIST et GIN

  • classement sur mesure avec des poids & ts_rank


Comment la recherche élastique (moteur de recherche) a un avantage sur la recherche en texte intégral dans Postgres?

Répondre

3

recherche fulltext et elasticsearch sont tous deux construits sur la même technologie de base indices inversés afin que les performances soient à peu près les mêmes.

FTS va être plus facile à déployer.

ES est livré avec Lucene,

si vous voulez Lucene avec FTS qui nécessiteront un effort supplémentaire.

+0

Pour la recherche en texte intégral, mise à part la configuration de la base de données Postgres, avons-nous besoin d'autre chose pour le déploiement? – overexchange

+0

aucun autre composant re requis, il y a cependant beaucoup à lire et à comprendre avant qu'il puisse être utilisé .. – Jasen

+0

Oui, j'ai fait cette lecture [ici] (https://github.com/shamhub/Web-app/tree/ master/Elastic_search/Full_text_search_Postgres), mais je vois que la recherche élastique en utilisant lucene supporte moins de documents schema contrairement aux tables postgres. N'est-ce pas? – overexchange