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

Fulltextsökning i MySQL


Article Summary

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

Språkstöd

MySQL använder fall- och accentokänslig kollation för fulltextsökning (FTS) som standard. Du kan dock specificera en annan kollation, till exempel:

$CFG->dboptions['ftslanguage'] = 'utf8_unicode_ci';
 $CFG->dboptions['ftslanguage'] = 'utf8mb4_0900_as_ci';
 $CFG->dboptions['ftslanguage'] = 'utf8mb4_de_pb_0900_ai_ci';

MySQL 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'] = true;

 Efter någon av dessa ändringar, fyll i FTS-tabeller igen och bygg om index genom att köra:

php admin/cli/fts_repopulate_tables.php
 php admin/cli/fts_rebuild_indexes.php

Minsta söktermlängd

Gränsen för MySQL-standardsöktecken kan ändras genom att redigera MySQL-konfigurationsfilen:

[mysqld]
 innodb_ft_min_token_size=2
 ft_min_word_len=2

Stoppa ord 

Stoppord är en uppsättning ord som kommer att uteslutas från index- och sökfrågor. De beror på språk som används under indexering och sökning, samt närvaro i ordlista för databasinstallation. Om en användare till exempel söker efter ”Hotels in Wellington” så utesluter systemet ”in” från sökningen.

Mer information om MySQL-stoppord finns i MySQL-hjälpdokumentationen .

Morfologisk sökning

Ngram är en inbyggd MySQL fulltext parser. Det bestämmer början och slutet av ord med hjälp av blanksteg och särskilda bokstavssekvenser. Det är vanligtvis aktiverat som standard, men detta kan bero på distribution. Det kan tolka två eller flera ord som härrör från sammansatta ord. Till exempel, för det tyska ordet "Fußballweltmeisterschaft", kommer det att söka med ord som "meister", "schaft" och så vidare. Ett index i fulltext som görs utan att använda denna plugin kommer inte att kunna dela upp ordet i mindre delar, och SQL som försöker leta efter ett nyckelord som "meister" kommer inte att kunna hitta posten.

För vissa ideografiska språk (som exemplet ovan) kommer det normala fulltextindexet att begränsas till vad det kan söka efter, eftersom det inte finns några avgränsare för dessa ord. Det är här Ngram kan vara användbart. Det är en sammanhängande sekvens av ett antal tecken från en sekvens av text. Huvudfunktionen i Ngram-tolkaren i fulltext är att tokenisera en sekvens av text till en sammanhängande sekvens av N-tecken.

I vissa fall kan Ngram ge falskt positiva resultat (även om de är lågt betygsatta och visas i slutet av listan), så det rekommenderas att du bekräftar att sökbeteendet passar dina behov efter att ha aktiverat Ngram-support.

För att aktivera Ngram, ändra din config.php-inställning enligt följande:

$CFG->dboptions['ftsngram'] = true;

Nästa, kör:

php admin/cli/fts_rebuild_indexes.php

Denna inställning har endast effekt i MySQL.

Oaccented sökning

Som standard stöder MySQL diakritiker, men det beror på kollation och språk som definieras i $CFG->dboptions ['ftslanguage']. Till exempel, när kollation är utf8_general_ci, så kommer sökfrågan som innehåller antingen ordet 'första' eller 'forsta' att returnera en post som innehåller ordet 'första'.

© 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.