Algoritmo per la ricerca pagina
-
23-09-2019 - |
Domanda
Sto creando una pagina di ricerca dove possiamo trovare il prodotto inserendo il testo.
es: porta la notte
.La mia domanda portare i record che contengono atleast parola da questo.
Ha bisogno: 1. In primo luogo dovrebbe riga contiene il record con la frase data. 2. seconda fila successiva più corrispondente. 3. Terza fila corrispondente successivo ... etc
Come raggiungere questo obiettivo. Esiste un algoritmo per questo. Sarà più utile se qualcuno condividere la vostra idea.
Modifica
Ricerca Ordine del campione:
1. Brings on the night
2. Whoever Brings the Night
3. Night Baseball Brings
4. Night ride
5. Night Round
6. Brings flower
Geetha
Soluzione
Hai provato la ricerca full-text? http://msdn.microsoft.com/en-us/library/ms142583. aspx
Altri suggerimenti
Costruzione di un motore di ricerca è un impegno molto complesso, che fare con l'ambiguità, il linguaggio umano, errori di battitura, e molto altro ancora. Si dovrebbe cercare di utilizzare ciò che viene con il vostro motore di database. SQL Server e SQLite loro hanno fuori dalla scatola e la maggior parte degli altri database probabilmente hanno funzionalità simili. Questi motori non sono particolarmente buone, ma dovrebbe essere sufficiente per scenari semplici. Per il lavoro più serio, provare Lucene, che viene fornito in vari gusti per diversi linguaggi di programmazione.
Come soluzione molto semplice si potrebbe usare operatore LIKE di SQL. Invece di
selezionare object_name da nome_tabella dove parametro = qualcosa
Si farebbe
selezionare object_name da table_name dove parametro come qualcosa
Questo potrebbe funzionare per gli scenari molto semplici
Alcuni puntatori
- tentare la RDBMS ricerca a testo integrale o studiare soluzioni come Lucene / Solr
- ci sono implementazioni di (Levenshtein) in SQL , per non aver la mano così banale reso classifica
- n-grammi (bigrammi, trigrammi) può fare molto, si veda per esempio tutto le opzioni in Postgres di ricerca interno rispetto a MySQL o MSSQL
Ricerche RDBMS interni (Postgres potrebbe essere un'eccezione) di solito hanno troppo poco opzioni, l'implementazione proprio è di solito troppo duro o RDBMS non avrebbe permesso di farlo (in modo efficiente).
In Java hai Lucene
C'è anche una porta per esso in PHP (Zend Lucene).
Hai anche una porta per C # Lucene .NET
Solo cambiando i vostri modelli db si può integrare nel motore di ricerca.
Date un'occhiata. Ho usato Lucene in passato ed è sempre stato molto efficace ed efficiente.