Beispiel einer MySql-Fuzzy-Abfrage-Lösung zum Abrufen von JSON-Schlüsselwörtern

Beispiel einer MySql-Fuzzy-Abfrage-Lösung zum Abrufen von JSON-Schlüsselwörtern

Vorwort

Kürzlich stieß ich in einem Projekt auf eine solche Anforderung: Ich muss einen Ergebnissatz abrufen, der den angegebenen Inhalt in der Datentabelle enthält. Der Datentyp dieses Felds ist Text und der gespeicherte Inhalt liegt im JSON-Format vor. Die spezifische Tabellenstruktur ist wie folgt:

CREATE TABLE `Produkt` (
	`id` INT(11) UNSIGNED NOT NULL AUTO_INCREMENT KOMMENTAR 'ID',
	`name` VARCHAR(100) NOT NULL DEFAULT '' COMMENT 'Produktname' COLLATE 'utf8mb4_general_ci',
	`Preis` DECIMAL(10,2) UNSIGNED NOT NULL DEFAULT '0.00' COMMENT 'Produktpreis',
	`suit` TEXT NOT NULL COMMENT 'Anwendbares Store-JSON-Format zum Speichern der Store-ID' COLLATE 'utf8mb4_general_ci',
	`status` TINYINT(3) NOT NULL DEFAULT '0' COMMENT 'Status 1-Normal 0-Gelöscht 2-Delisted',
	`create_date` DATETIME NICHT NULL DEFAULT CURRENT_TIMESTAMP COMMENT 'Veröffentlichungszeitpunkt',
	`update_date` DATETIME NICHT NULL DEFAULT CURRENT_TIMESTAMP BEI UPDATE CURRENT_TIMESTAMP COMMENT 'Änderungszeit',
	PRIMÄRSCHLÜSSEL (`id`) MIT BTREE
)
COMMENT='Produkttabelle'
COLLATE='utf8mb4_general_ci'
ENGINE=InnoDB
AUTO_INCREMENT=1
;

Die Tabellendaten lauten wie folgt:

Aktuelle Anforderung: Suchen Sie die Daten mit 10001 in Anzug->Hotel.

Über die Google- und Baidu-Suche können wir die folgenden Lösungen finden:

Option 1:

Wählen Sie * aus dem Produkt, wobei die Farbe etwa '%"10001"%' ist;
#Like-Methode kann keine Indizes verwenden, hat eine schlechte Leistung und ist nicht genau

Option 2:

Wählen Sie * aus dem Produkt, wobei Farbe LOCATE('"10001"', 'Farbe') > 0 ist;
# Die LOCATE-Methode hat das gleiche Problem wie die LIKE-Methode

Option 3:

Wählen Sie * aus dem Produkt, wobei Anzug != '' und json_contains('Anzug'->'$.hotel', '"10001"');
#Suche mit der in MySQL integrierten JSON-Funktion, für deren Unterstützung MySQL 5.7 oder höher erforderlich ist, mit hoher Genauigkeit und ohne Verwendung eines Volltextindex

Option 4 (endgültig angenommene Option):

Wählen Sie * aus dem Produkt, wobei MATCH(Farbe) GEGEN('+"10001"' IM BOOLEAN-MODUS) ist.
#Sie können die Volltextindizierung verwenden. Das Standardlimit für MySQL-Schlüsselwörter beträgt mindestens 4 Zeichen. Sie können ft_min_word_len=2 in mysql.ini ändern, damit die Änderung nach dem Neustart wirksam wird.

Weitere Informationen zur Verwendung von MATCH() AGAINST() finden Sie im MySQL-Referenzhandbuch:

https://dev.mysql.com/doc/refman/5.6/ja/fulltext-boolean.html

Zusammenfassen

Dies ist das Ende dieses Artikels über das Beispiel einer MySql Fuzzy Query JSON Keyword Retrieval-Lösung. Weitere relevante Inhalte zum MySql JSON Keyword Retrieval finden Sie in den vorherigen Artikeln von 123WORDPRESS.COM oder in den folgenden verwandten Artikeln. Ich hoffe, dass jeder 123WORDPRESS.COM in Zukunft unterstützen wird!

Das könnte Sie auch interessieren:
  • Beispielcode zum Konvertieren des Mysql-Abfrageergebnissatzes in JSON-Daten
  • Detaillierte Erklärung zur Abfrage von Feldern im JSON-Format in MySQL
  • Datenabfragevorgang im MySQL-JSON-Format
  • Zusammenfassung der zugehörigen Funktionen für JSON-Ergebnisse von MySQL-Abfragen
  • Was ist schneller: MySQL-Volltextindex, gemeinsamer Index, Like-Abfrage und JSON-Abfrage?
  • Zwei Abfragemethoden, wenn der MySQL-Abfragefeldtyp JSON ist
  • Python-Abfrage MySQL, gibt JSON-Instanz zurück
  • So fragen Sie JSON in der Datenbank in MySQL 5.6 und darunter ab
  • Mysql fragt die Daten direkt im gespeicherten JSON-String ab

<<:  HTML-Bild img-Tag_Powernode Java Academy

>>:  Analyse der Verwendung der Funktion zur sofortigen Ausführung in JavaScript

Artikel empfehlen

Vue implementiert das digitale Tausendertrennzeichenformat global

In diesem Artikelbeispiel wird der spezifische Co...

CSS steuert den Abstand zwischen Wörtern durch die Eigenschaft „letter-spacing“

Eigenschaft „letter-spacing“ : Vergrößern oder ve...

Detaillierte Erläuterung der MySQL-Remoteverbindungsberechtigung

1. Melden Sie sich bei der MySQL-Datenbank an mys...

So aktualisieren Sie die Ansicht synchron nach Datenänderungen in Vue

Vorwort Vor kurzem bin ich auf ein interessantes ...

Beispiel für die Konfiguration der Timeout-Einstellung für MySQL-Datenbanken

Inhaltsverzeichnis Vorwort 1. JDBC-Timeout-Einste...

Zusammenfassung gängiger MySQL-Befehle

Festlegen des MySQL-Root-Passworts Melden Sie sic...

So erstellen Sie schnell eine statische Website in der Alibaba Cloud

Vorwort: Als Junior-Programmierer träume ich davo...

Gründe, warum MySQL 8.0-Statistiken ungenau sind

Vorwort Unabhängig davon, ob es sich um Oracle od...

So ändern Sie die Größe von Partitionen in CentOS7

Gestern habe ich jemandem bei der Installation ei...

Detaillierte Diskussion über Speicher und Variablenspeicher in JS

Inhaltsverzeichnis Vorwort JS Magische Zahl Numme...

So definieren Sie Datenbeispiele in Vue

Vorwort Im Entwicklungsprozess ist das Definieren...