suchen
HeimDatenbankMySQL-TutorialWie kann ich den Fuzzy-Firmennamenabgleich in MySQL mit PHP zur automatischen Vervollständigung implementieren?

How can I implement fuzzy company name matching in MySQL with PHP for auto-completion?

Fuzzy Company Name Matching in MySQL mit PHP zur automatischen Vervollständigung

Einführung

Ergebnis Fuzzy-Matches für Firmennamen sind eine häufige Aufgabe in Autovervollständigungssystemen. Diese Aufgabe kann aufgrund der großen Anzahl potenziell passender Unternehmen und der Notwendigkeit effizienter Suchalgorithmen eine Herausforderung sein.

Soundex-Indexierung

Ein Ansatz für Fuzzy-Matching ist die Verwendung von Soundex Indizierung. Soundex ist ein phonetischer Algorithmus, der Wörter basierend auf ihrer Aussprache kodiert. Dies ermöglicht eine ungefähre Übereinstimmung von Wörtern, auch wenn sie unterschiedliche Schreibweisen haben. Die Soundex-Indizierung weist jedoch Einschränkungen auf, z. B. kann sie nicht zwischen längeren Zeichenfolgen unterscheiden und der erste Buchstabe muss gleich sein.

Levenshtein-Distanz

Ein fortgeschrittenerer Ansatz Beim Fuzzy-Matching wird die Levenshtein-Distanz verwendet. Der Levenshtein-Abstand misst die Anzahl der Einfügungen, Löschungen oder Ersetzungen, die erforderlich sind, um eine Zeichenfolge in eine andere umzuwandeln. Im Gegensatz zu Soundex weist diese Methode nicht die zuvor genannten Nachteile auf.

Verwendung der Levenshtein-Distanz in PHP

Die Website codejanitor.com bietet ein Beispiel für eine in MySQL gespeicherte Funktion, die berechnet die Levenshtein-Distanz. Mit dieser Funktion können Sie wie folgt einen Fuzzy-Abgleich für Firmennamen durchführen:

// Load MySQL stored function (if not already loaded)
if (!function_exists('Levenshtein')) {
    $sql = "CREATE FUNCTION Levenshtein(s1 VARCHAR(255), s2 VARCHAR(255)) RETURNS INT
    BEGIN
        DECLARE lv_s1, lv_s2 VARCHAR(255);
        DECLARE lv_len1, lv_len2, lv_i, lv_j, lv_c, lv_cost INT;
        DECLARE lv_arr1[255] INT;
    
        SET lv_s1 = LOWER(s1);
        SET lv_s2 = LOWER(s2);
        SET lv_len1 = LENGTH(lv_s1);
        SET lv_len2 = LENGTH(lv_s2);
    
        -- Initialize the array
        SET lv_arr1[1] = 0;
        FOR lv_i = 1 TO lv_len1 DO
            SET lv_arr1[lv_i + 1] = lv_i;
        END FOR;
    
        -- Step 2
        FOR lv_j = 1 TO lv_len2 DO
            SET lv_c = lv_j;
            FOR lv_i = 1 TO lv_len1 DO
                IF SUBSTRING(lv_s1, lv_i, 1) = SUBSTRING(lv_s2, lv_j, 1) THEN
                    SET lv_cost = 0;
                ELSE
                    SET lv_cost = 1;
                END IF;
                SET lv_c = LEAST(lv_c + 1, lv_arr1[lv_i] + lv_cost, lv_arr1[lv_i - 1] + 1);
                SET lv_arr1[lv_i] = lv_c;
            END FOR;
        END FOR;
    
        RETURN lv_c;
    END;";
    $result = $mysqli->query($sql);
}

// Execute fuzzy matching query
$numWords = 0;
$userInput = "Microsift";
$query = "SELECT company_name, Levenshtein('$userInput', company_name) AS distance
          FROM companies
          ORDER BY distance ASC";
$result = $mysqli->query($query);

// Display results
while ($row = $result->fetch_assoc()) {
    $numWords++;
    echo $row['company_name'] . " (" . $row['distance'] . ")\n";
}

if ($numWords == 0) {
    echo "No matches found.\n";
}

Das obige ist der detaillierte Inhalt vonWie kann ich den Fuzzy-Firmennamenabgleich in MySQL mit PHP zur automatischen Vervollständigung implementieren?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Mit welchen Tools können Sie die MySQL -Leistung überwachen?Mit welchen Tools können Sie die MySQL -Leistung überwachen?Apr 23, 2025 am 12:21 AM

Wie kann ich die MySQL -Leistung effektiv überwachen? Verwenden Sie Tools wie MySQLADMIN, ShowGlobalstatus, Perconamonitoring and Management (PMM) und MySQL Enterprisemonitor. 1. Verwenden Sie MySQLADMIN, um die Anzahl der Verbindungen anzuzeigen. 2. Verwenden Sie ShowglobalStatus, um die Abfragenummer anzuzeigen. 3.PMM bietet detaillierte Leistungsdaten und grafische Schnittstelle. 4.MysqlenterPrisemonitor bietet reichhaltige Überwachungsfunktionen und Alarmmechanismen.

Wie unterscheidet sich MySQL von SQL Server?Wie unterscheidet sich MySQL von SQL Server?Apr 23, 2025 am 12:20 AM

Der Unterschied zwischen MySQL und SQLServer ist: 1) MySQL ist Open Source und für Web- und Embedded-Systeme geeignet, 2) SQLServer ist ein kommerzielles Produkt von Microsoft und für Anwendungen auf Unternehmensebene geeignet. Es gibt signifikante Unterschiede zwischen den beiden in der Speicher -Engine-, der Leistungsoptimierung und den Anwendungsszenarien. Bei der Auswahl müssen Sie die Projektgröße und die zukünftige Skalierbarkeit berücksichtigen.

In welchen Szenarien könnten Sie SQL Server über MySQL wählen?In welchen Szenarien könnten Sie SQL Server über MySQL wählen?Apr 23, 2025 am 12:20 AM

In Anwendungsszenarien auf Unternehmensebene, die eine hohe Verfügbarkeit, eine erweiterte Sicherheit und eine gute Integration erfordern, sollte SQLServer anstelle von MySQL ausgewählt werden. 1) SQLServer bietet Funktionen auf Unternehmensebene wie hohe Verfügbarkeit und fortschrittliche Sicherheit. 2) Es ist eng in Microsoft -Ökosysteme wie Visualstudio und PowerBi integriert. 3) SQLServer führt hervorragende Leistungsoptimierung durch und unterstützt speicheroptimierte Tabellen und Spaltenspeicherindizes.

Wie geht MySQL mit Zeichensets und Kollationen um?Wie geht MySQL mit Zeichensets und Kollationen um?Apr 23, 2025 am 12:19 AM

MysqlmanagesCharactersetsandCollationsByusingUtf-8ASTHEDEFAULT, Erlaubt configurationatdatabase, Tabelle, und ColumnLlevels, andrequiringCarefulAnignmenttoAvoidmiscatches.1) setDefaultcharactersetandCollationForAdatabase.2) configurecharactersetandcollationFor for

Was sind Auslöser in MySQL?Was sind Auslöser in MySQL?Apr 23, 2025 am 12:11 AM

Ein MySQL -Trigger ist eine automatisch ausgeführte gespeicherte Prozedur, die einer Tabelle zugeordnet ist, mit der eine Reihe von Vorgängen durchgeführt wird, wenn eine bestimmte Datenoperation ausgeführt wird. 1) Definition und Funktion Trigger: Wird zur Datenüberprüfung, Protokollierung usw. verwendet. 2) Arbeitsprinzip: Es wird in vor und nach und nach unten unterteilt und unterstützt das Auslösen auf Zeilenebene. 3) Beispiel für die Verwendung: Kann verwendet werden, um Gehaltsänderungen aufzuzeichnen oder das Inventar zu aktualisieren. 4) Debugging -Fähigkeiten: Verwenden Sie Showtrigger und Showcreatetrigger -Befehle. 5) Leistungsoptimierung: Vermeiden Sie komplexe Operationen, verwenden Sie Indizes und Verwalten von Transaktionen.

Wie erstellen und verwalten Sie Benutzerkonten in MySQL?Wie erstellen und verwalten Sie Benutzerkonten in MySQL?Apr 22, 2025 pm 06:05 PM

Die Schritte zum Erstellen und Verwalten von Benutzerkonten in MySQL sind wie folgt: 1. Erstellen Sie einen Benutzer: Verwenden Sie CreateUser'Newuser '@' localhost'IdentifiedBy'Password '; 2. Berechtigungen zuweisen: Verwenden Sie GrantSelect, einfügen, updateonMyDatabase.to'newuser'@'LocalHost '; 3.. Behebung des Berechtigungsfehlers: Verwenden Sie revokeAllPrivileGesonMyDatabase.from'Newuser'@'localhost '; dann die Berechtigungen neu zuweisen; 4. Optimierungsberechtigungen: Verwenden Sie Showgra

Wie unterscheidet sich MySQL von Oracle?Wie unterscheidet sich MySQL von Oracle?Apr 22, 2025 pm 05:57 PM

MySQL eignet sich für schnelle Entwicklung und kleine und mittelgroße Anwendungen, während Oracle für große Unternehmen und hohe Verfügbarkeitsanforderungen geeignet ist. 1) MySQL ist Open Source und einfach zu bedienen, geeignet für Webanwendungen und kleine und mittelgroße Unternehmen. 2) Oracle ist mächtig und für große Unternehmen und Regierungsbehörden geeignet. 3) MySQL unterstützt eine Vielzahl von Speichermotoren, und Oracle bietet reichhaltige Funktionen auf Unternehmensebene.

Was sind die Nachteile der Verwendung von MySQL im Vergleich zu anderen relationalen Datenbanken?Was sind die Nachteile der Verwendung von MySQL im Vergleich zu anderen relationalen Datenbanken?Apr 22, 2025 pm 05:49 PM

Zu den Nachteilen von MySQL im Vergleich zu anderen relationalen Datenbanken gehören: 1. Leistungsprobleme: Sie können bei der Verarbeitung von Daten mit groß angelegten Daten Engpässe begegnen, und PostgreSQL bietet eine bessere Leistung in komplexen Abfragen und Big-Data-Verarbeitung. 2. Skalierbarkeit: Die horizontale Skalierungsfähigkeit ist nicht so gut wie Google Schrank und Amazon Aurora. 3. Funktionale Einschränkungen: Nicht so gut wie PostgreSQL und Oracle in erweiterten Funktionen, einige Funktionen erfordern mehr benutzerdefinierte Code und Wartung.

See all articles

Heiße KI -Werkzeuge

Undresser.AI Undress

Undresser.AI Undress

KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover

AI Clothes Remover

Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool

Undress AI Tool

Ausziehbilder kostenlos

Clothoff.io

Clothoff.io

KI-Kleiderentferner

Video Face Swap

Video Face Swap

Tauschen Sie Gesichter in jedem Video mühelos mit unserem völlig kostenlosen KI-Gesichtstausch-Tool aus!

Heiße Werkzeuge

SublimeText3 chinesische Version

SublimeText3 chinesische Version

Chinesische Version, sehr einfach zu bedienen

Sicherer Prüfungsbrowser

Sicherer Prüfungsbrowser

Safe Exam Browser ist eine sichere Browserumgebung für die sichere Teilnahme an Online-Prüfungen. Diese Software verwandelt jeden Computer in einen sicheren Arbeitsplatz. Es kontrolliert den Zugriff auf alle Dienstprogramme und verhindert, dass Schüler nicht autorisierte Ressourcen nutzen.

Notepad++7.3.1

Notepad++7.3.1

Einfach zu bedienender und kostenloser Code-Editor

SAP NetWeaver Server-Adapter für Eclipse

SAP NetWeaver Server-Adapter für Eclipse

Integrieren Sie Eclipse mit dem SAP NetWeaver-Anwendungsserver.

SublimeText3 Linux neue Version

SublimeText3 Linux neue Version

SublimeText3 Linux neueste Version