2017-02-05 4 views
4

Ich möchte die Stoppwörter aus meinen Daten entfernen, aber ich möchte die Wörter nicht eindämmen, da die genauen Wörter für mich wichtig sind. Ich habe diese Abfrage verwendet.Entfernen Sie Stoppwörter ohne Stemming in Postgresql

SELECT to_tsvector('english',colName)from tblName order by lower asc; 

Gibt es eine Möglichkeit, dass ich StopWords entfernen kann, ohne die Wörter zu stempeln?

dank

Antwort

7

Ihre eigene Textsuche Wörterbuch und Konfiguration erstellen:

CREATE TEXT SEARCH DICTIONARY simple_english 
    (TEMPLATE = pg_catalog.simple, STOPWORDS = english); 

CREATE TEXT SEARCH CONFIGURATION simple_english 
    (copy = english); 
ALTER TEXT SEARCH CONFIGURATION simple_english 
    ALTER MAPPING FOR asciihword, asciiword, hword, hword_asciipart, hword_part, word 
    WITH simple_english; 

Es funktioniert dies wie:

SELECT to_tsvector('simple_english', 'many an ox eats the houses'); 
┌─────────────────────────────────────┐ 
│    to_tsvector    │ 
├─────────────────────────────────────┤ 
│ 'eats':4 'houses':5 'many':1 'ox':3 │ 
└─────────────────────────────────────┘ 
(1 row) 

Sie den Parameter default_text_search_config auf simple_english festlegen können es Ihren Standard zu machen Textsuchkonfiguration

+0

Ich habe es getan, und dann habe ich eine Abfrage wie folgt gemacht: update tblName set cilName = to_tsvector ('simple_english', colName); 'und gibt dann diesen Fehler' value zu lang für type character variating (254) '! – Raha1986

+0

Es macht nicht viel Sinn, einen 'tsvector' in einer 'varchar'-Spalte zu speichern. Vor allem, wenn Sie es so kurz definieren, dass es den Wert nicht halten kann. Was versuchst du zu machen? –

+0

danke für schnelle antwort. Ich habe eine Spalte mit Tags, das können einige Zeichen oder sogar Sätze sein. Die Tags können gleich sein, aber dadurch sehen sie anders aus. Ich möchte die Stoppwörter und alle Zeichen löschen und die unverwechselbaren Tags finden. – Raha1986

Verwandte Themen