Worttrennzeichen für Postgres-Volltextsuche mit Rails

9

Ich verwende pg_search für eine Textsuche in meinem Modell. Neben anderen Attributen habe ich ein url -Feld.

Unglücklicherweise scheint Postgres / und . nicht als Worttrennzeichen zu identifizieren, daher kann ich nicht innerhalb von url suchen.

Beispiel: Die Suche nach test in Ссылка liefert keine Ergebnisse.

Gibt es eine Möglichkeit, dieses Problem zu beheben, vielleicht ein anderes Juwel oder Inline-SQL?

    
mihai 30.12.2012, 18:11
quelle

2 Antworten

0

Am Ende habe ich das pg_search Juwel geändert, um beliebige ts_vector Ausdrücke anstatt nur Spaltennamen zu unterstützen. Die Änderungen sind hier

Jetzt kann ich schreiben:

%Vor%     
mihai 06.01.2013, 10:44
quelle
5

Wie in der Dokumentation erwähnt (und von AJcodez bemerkt), gibt es eine Lösung beim Erstellen einer dedizierten Spalte für den Tsvector-Index. Definieren Sie dann einen Auslöser, der die Einfügungen erfasst, um URLs richtig zu indizieren:

%Vor%

Diese Methode wird alle Nicht-Alpha-Zeichen in einen einzelnen Raum transformieren und die Zeichenkette in einen Tsvektor umwandeln:

%Vor%

Erstellen Sie nun einen Trigger, der diese Funktion aufruft:

%Vor%

Wenn URLs eingefügt werden, wird das Feld 'url_tsvectorè' automatisch ausgefüllt.

%Vor%

Um nach URLs zu suchen, müssen Sie nur nach diesem Feld fragen.

%Vor%     
greg 02.01.2013 10:53
quelle