Domanda

Voglio aggiungere nuova funzionalità per la ricerca nel mio sito. Sto utilizzando PHP e MySQL. database mysql che contiene una tabella per gli elementi che l'utente dovrà cercare, per ogni elemento è presente una colonna "parola chiave", che di parole chiave separate da virgole "ESEMPIO: gatto, cane, cavallo". dopo la ricerca degli utenti nel mio sito voglio ottenere le parole che sono permettetemi di dire "85%", simile alla sua parola chiave di ricerca, questo è per la ricerca ridefinire. e per errore d'ortografia voglio un servizio o qualcosa che forniscono se la parola chiave è corretta o errata in modo da ottenere alcune correzioni e verificare se coloro che esiste nel database e quindi dare quelle correzioni all'utente di cambiare la sua parola chiave di ricerca.

Non sto chiedendo una soluzione qui ... ma se mi è possibile indirizzare in un modo o nell'altro che sarà grande

Grazie ragazzi

Saluti

È stato utile?

Soluzione

La chiave è nella vostra idea di "85% simile". Ecco alcune idee:

Parole simili tabella

È possibile definire una tabella in cui si elencano gli errori d'ortografia comuni per le parole chiave. Avrai quindi per aumentare come si esegue una ricerca nel database per mappare errori di ortografia comuni sul valore appropriato.

Parole simili Lookup

Quando si esegue la ricerca, utilizzare una libreria per generare parole simili e la ricerca di tutti loro. È possibile utilizzare qualsiasi tipo di libreria di ortografia per generare possibili corrispondenze di parole prima di inviare la ricerca. O lascia la tua base alla Modifica Distanza .

Solo verificare se necessario: Dal momento che si sta utilizzando PHP, si può considerare pspell. Innanzitutto è possibile chiamare pspell_check per vedere se la parola è scritta correttamente. Quindi chiamare pspell_suggest per ottenere suggerimenti.

Vedere questo link per un esempio.

utilizzare una funzione del database

MySQL, per esempio, ha un operatore di SOUNDS_LIKE. È possibile cercare WHERE keyword SOUNDS_LIKE 'kat' e (presumibilmente) get cat. Maggiori informazioni si trova sulla pagina di documentazione , che segnala ad alcune limitazioni (come l'inglese e UTF-8 solo).


Sembra un problema abbastanza comune, così forse ci sono altre soluzioni più canonici a questo problema. Forse c'è qualcosa di specifico per la lingua che si sta utilizzando (o nello strato di interfaccia di database) che può astrarre questo per voi.

I primi due dovrebbero permetterà di incontrare qualche nozione di 85% di somiglianza. Non ho idea di quanto bene la terza opzione funzionerà, ma è "Soundz kool".

Altri suggerimenti

Non c'è similar_text () in PHP, ma questo è dopo che la query; si potrebbe anche verificare di ricerca full-text in MySQL.

Prova a guardare nella Edit Distanza Algoritmo. Fondamentalmente per due stringhe ingressi, il valore restituito è il numero minimo di modifiche necessarie per trasformare una stringa nell'altra. Che può darvi qualche idea su come chiudere due stringhe sono.

Modifica Distanza

Apache Solr è una fonte aperta piattaforma di ricerca che fornisce non solo con funzionalità di ricerca full-text, ma anche con built-in corrispondenza punteggio e autosuggestione sistemi, tra molti altri potenti funzionalità .

Se la quantità di informazioni nel vostro sito non è abbastanza significativa, questa opzione può sembrare eccessivo, anche se io consiglierei almeno check it out.

La comunicazione tra la vostra applicazione e Solr può essere gestita attraverso un'interfaccia REST standard. Per quanto ne sappia ci sono due buone biblioteche Solr-specifico PHP disponibili al momento:

Configurazione del server è piuttosto semplice, essendo la parte laboriosa (così come l'interessante), che di messa a punto e ottimizzare Solr al meglio le proprie esigenze.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top