Fulltextsökning i PostgreSQL
  • 08 Apr 2024
  • 2 Protokoll att läsa

Fulltextsökning i PostgreSQL


Article Summary

Fulltextsökning (FTS) möjliggör en sofistikerad metod för textsökning i Totara, särskilt i katalogen. Information om hur du ställer in detta med PostgresSQL finns på denna sida.  

Som standard stöder PostgreSQL-databasen fulltextsökning i fraser, ord och partiella sökningar från början av ordet (t.ex. "Edu*" kommer att returnera poster som innehåller ordet "utbildning" i dem).

Språk

PostgreSQL använder konfigurationen ”Engelska” för fulltextsökning (FTS) som standard. För en lista över tillgängliga alternativ, se resultaten av "VÄLJ cfgname FRÅN pg_ts_config;". Exempelvis:

$CFG->dboptions['ftslanguage'] = 'engelska';
 $CFG->dboptions['ftslanguage'] = 'enkel'; 
$CFG->dboptions['ftslanguage'] = 'german';

PostgreSQL stöder inte japanska och andra språk med mycket korta ord utan mellanslag däremellan. Aktivera följande inställning för att få ett grundläggande experimentellt stöd för dessa språk:

$CFG->dboptions['fts3bworkaround'] = sant;
Efter någon av dessa ändringar, fyll i FTS-tabeller igen genom att köra:
php admin/cli/fts_repopulate_tables.php

Minsta söktermlängd

PostgreSQL har inte specifika krav på standardlängd och kan hitta alla ord, förutsatt att de är ord som vanligtvis finns i en ordlista. 

Stoppa ord

Stoppord är en uppsättning ord som kommer att uteslutas från index- och sökfrågor. De beror på vilket språk som används vid indexering och sökning, samt närvaro i ordlista för databasinstallation.

Till exempel, om en användare söker efter "Hotels in Wellington" så kommer systemet att utesluta "in" från sökningen.

Mer information om PostgreSQL stoppord finns i PostgreSQL hjälpdokumentation .

Morfologisk sökning

En viktig sak att notera är att PostgreSQL inte stöder avancerade språkfunktioner ur lådan, så du måste installera en specifik Hunspell ordbok för det språk som du tänker använda. Det finns några platser du kan ladda ner språk från, till exempel LibreOffice Extensions och Mozilla Addons .

Nedan kan du hitta ett exempel på hur man aktiverar morfologisk sökning i PostgreSQL på Ubuntu 18.04 för det svenska språket. Detta är inte en definitiv guide, snarare är det ett exempel på hur det kan göras i ett visst fall. Se PostgreSQL-dokumentation för mer information.

Om vi till exempel tar det svenska språket, kommer följande inte att fungera ur rutan:

-- Detta kommer att återvända {äppelträd} som lexemes istället för {äppelträd,äppel,träd} som vi förväntar oss att
välja * från ts_debug('pg_catalog.swedish', 'äppelträd');

För att PostgreSQL ska kunna tolka ovanstående korrekt måste du installera Hunspell svenska ordbok genom att följa dessa steg:

  1. Gå till Mozilla Addons och ladda ner den svenska ordlistan (högerklicka på knappen Lägg till i Firefox och klicka på Spara länk som ).
  2. Extrahera filen som laddades ner (ibland har den nedladdade filen ingen filändelse, så lägg bara till .oxt)
  3. Kopiera *.aff, *.dic-filerna till PostgreSQL-tsearch_datakatalogen och byt namn till sv_se.affix och sv_se.dict.
  4. Bekräfta att filerna är UTF-8-kodade. Nedan kommer den aktuella kodningen av filerna att skrivas ut: 
fil -i sv_se.*

Om filerna inte är UTF-8-kodade kan du utföra följande kommandon (ersätt bara ISO-8859-1 med kodningsutgången ovanifrån):

iconv -f ISO-8859-1 -t UTF-8//TRANSLIT sv_se.affix -o sv_se.affix
iconv -f ISO-8859-1 -t UTF-8//TRANSLIT sv_se.dict -o sv_se.dict

  1. Utför följande kommandon i PostgreSQL:
SKAPA TEXTSÖKNINGSDIKTIONÄR sv_hunspell(
 Mall = ispell,
 DictFile = sv_se,
 AffFile = sv_se,
 Stoppord = svenska
 );
 
 SKAPA TEXTSÖKKONFIGURATION sv_hunspell(parser = standard);
ALTER TEXTSÖKKONFIGURATION sv_hunspell ÄNDRE MAPPING FÖR asciiword, asciihword, hword_asciipart,word, hword, hword_part WITH sv_hunspell;
Ovanstående kommer att installera ordlistan, och du kan sedan använda den enligt följande:
-- Detta returnerar förväntade {äppelträd,äppel,träd} lexemes:
välj * från ts_debug('sv_hunspell', 'äppelträd');

 

© Copyright 2024 Totara Learning Solutions. All rights reserved. Some content originally obtained via GPLv3 license and continues to be available under GPLv3. All other content is the sole copyright of Totara Learning Solutions. 


Var den här artikeln till hjälp?

Changing your password will log you out immediately. Use the new password to log back in.
First name must have atleast 2 characters. Numbers and special characters are not allowed.
Last name must have atleast 1 characters. Numbers and special characters are not allowed.
Enter a valid email
Enter a valid password
Your profile has been successfully updated.