Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Switch to Pg_Search #663

Open
5 tasks
lkleisa opened this issue Aug 8, 2022 · 4 comments
Open
5 tasks

Switch to Pg_Search #663

lkleisa opened this issue Aug 8, 2022 · 4 comments

Comments

@lkleisa
Copy link
Collaborator

lkleisa commented Aug 8, 2022

Because we use now PostgreSQL as db in production, we want to switch from plain sql search to pg_search

https://codimd.puzzle.ch/qKQ9PTSaT5il9pQeq0oVdQ?view#Pg_Search

This has already been implemented by unibe students: #613

ToDo

  • Rebase PR branch, make sure build works
  • Study changes in PR
  • Add specs where possible/makes sense
  • Make sure search is working with postgres and with other db like sqlite...
  • Update Version and Changelog

Änderung!

Branch #613 soll als Vorbild genommen werden, pg_search wird aber neu implementiert => auf mergen verzichten.

@Vakmeth Vakmeth self-assigned this Jul 3, 2023
@Vakmeth Vakmeth linked a pull request Jul 3, 2023 that will close this issue
@Vakmeth
Copy link
Collaborator

Vakmeth commented Jul 3, 2023

Vorgehen:

  • Informieren was die pg_search ist, unter diesem Ticket kurz dokumentieren

pg_search is a Ruby gem that provides full-text search capabilities for PostgreSQL databases. It is specifically designed to make it easier to perform advanced search queries against text data stored in PostgreSQL.

The pg_search gem adds features to ActiveRecord models, allowing you to define full-text search scopes and perform searches against the database. It leverages PostgreSQL's powerful full-text search functionality, which includes support for stemming, ranking, and advanced search operators.

  • Tutorial zur Implementierung suchen, wenn möglich gerade mit Rails
    Bei der Implementierung von pg_search haben wir 2 Möglichkeiten:
  • pg_search_scope
  • pg_multisearch

Die Search Scope Option lässt dich über ein Model spezifischer suchen, die Multisearch Option lässt uns über alle Models ein Textattribut suchen.

=> Da wir im Cryptopus ein Suchfeld haben, welches über alle Teams etwas sucht, denke ich das die pg_multisearch die bessere Implementation bietet.

@Vakmeth
Copy link
Collaborator

Vakmeth commented Jul 5, 2023

Stand des Tickets:

  • Das PgSearch Modul aus dem pg_search-gem wird nun sowohl bei einer postgres Datenbank, wie auch bei einer anderen Datenbank bei den Models team, folder und encryptable inkludiert.

  • Auf dem Branch selbst wurde die Konfiguration der Datenbank zu einer Postgres Datenbank geändert, somit kann die Funktionalität direkt während des Entwickelns getestet werden

Todo

  • Die PgSearch muss nun in die Search-Methode von Cryptopus eingebaut werden, allerdings nur, wenn wir auch wirklich die Postgres Datenbank brauchen

  • Absprechen wie die Migration verlaufen soll => ein PG-Search table wird benötigt um die Suche zu gestalten

@Vakmeth Vakmeth added the freeze label Jul 5, 2023
@Vakmeth Vakmeth removed the freeze label Jul 19, 2023
@Vakmeth
Copy link
Collaborator

Vakmeth commented Jul 21, 2023

Strategie 21.07.2023

  • Matching Teams zurückgeben
  • Tests schreiben
  • Zum Review freigeben => Wenn möglich noch abschliessen

@Vakmeth
Copy link
Collaborator

Vakmeth commented Jul 21, 2023

Update zum Ticket:

  • Wir verwenden Scope_Search, um pro Tabelle die Ergebnisse zu holen welche der User auch wirklich abrufen darf
  • Die lokale Entwicklungsumgebung für postgres wurde wieder abgebaut allerdings steht dafür allzeit ein eigenes docker-compose.yml in den Konfigurationsfiles bereit.
  • Die Suche wird von der SearchStrategy Klasse gehandelt welche wiederum eine Unterklasse PGSearching und SQSearch enthält, beide besitzen je eine search Methode, welche unterschiedlich vorgeht.

TODO:

  • Feedback von @mtnstar einholen
  • Feedback implementieren
  • Mergen

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants