24. maj 2002 - 18:24Der er
6 kommentarer og 1 løsning
søgning med stavefejl
Jeg skal have lavet en eller anden form for søgning, som også finder ting der bare ligner, fx 'hansen' skal også give hanson, hanssen, jansen, ..., dvs. den skal også give resultater hvor et (eller et par) bogstaver er ændret/tilføjet/fjernet. Jeg har ikke rigtigt nogen fornemmelse af hvordan det kan gøres (men jeg er overbevist om at det KAN!). Er der nogen der har nogen gode forslag til hvilken retning jeg skal kigge i?
MATCH (col1,col2,...) AGAINST (expr) MATCH (col1,col2,...) AGAINST (expr IN BOOLEAN MODE) MATCH ... AGAINST() is used for full-text search and returns relevance - similarity measure between the text in columns (col1,col2,...) and the query expr. Relevance is a positive floating-point number. Zero relevance means no similarity. MATCH ... AGAINST() is available in MySQL version 3.23.23 or later. IN BOOLEAN MODE extension was added in version 4.0.1. For details and usage examples, see section 6.8 MySQL Full-text Search.
SOUNDEX(str) Returns a soundex string from str. Two strings that sound almost the same should have identical soundex strings. A standard soundex string is 4 characters long, but the SOUNDEX() function returns an arbitrarily long string. You can use SUBSTRING() on the result to get a standard soundex string. All non-alphanumeric characters are ignored in the given string. All international alpha characters outside the A-Z range are treated as vowels: mysql> SELECT SOUNDEX('Hello'); -> 'H400' mysql> SELECT SOUNDEX('Quadratically'); -> 'Q36324'
-det er vist hvad der findes af den slags i mysql!
-så er der spørgsmål om du vil indlæse hele mysql-db'en i et array og bruge php til at lave søgningen... - jeg vil dog tro at de to mysql muligheder burde løse dit problem!
Tak, det ser jo meget godt ud (og undskyld den lidt sene reaktion). Her kommer lige et par tillægsspørgsmål: Hvad nu hvis jeg også gerne vil have resultater som har næsten samme soundex (dvs. acceptere lidt flere resultater)? Især begyndelsesbogstavet kan vel blive et problem (à la Kamilla, Camilla). Posterne i databasen er meget forskellige, så der skal meget til før den kommer til at tage alt for mange forkerte svar med. Desuden vil jeg også gerne have den til at kunne finde poster som indeholder søgestrengen (fx 'Hans Jensen' ud fra 'Jensen'). Det klarer soundex vist ikke bare lige... Men måske vil det så være nemmere at lave fra PHP?
De eksempler du nævner kan du ikke klare med én kommando - du bliver nødt til at mikse de forslag som er nævnt ovenfor - måske med noget rating afhængig af hvilke poster der bliver fundet af hvilke søgninger - men så har du efterhånden også gang i et lettere kompliceret system.
Synes godt om
Ny brugerNybegynder
Din løsning...
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.