Tecnica di ricerca: più hit, priorità ai risultati

0

Ho sviluppato un algoritmo di ricerca, che fondamentalmente corrisponde ai record su 3 diversi tipi di criteri. Nome, indirizzo e parole chiave.

"doh", troverà:

  • Nome: doh
  • Indirizzo: re
  • Parole chiave: me
  • Nome: re
  • Indirizzo: doh
  • Parole chiave: me
  • Nome: re
  • Indirizzo: me
  • Parole chiave: doh

Ora, quando due o più record hanno una corrispondenza, in pratica sto dando la priorità a una singola entità trovata, controllando quante volte è stata trovata.

Il mio problema è che una singola query troverà sempre un solo record, anche se corrisponde a più di un criterio, quindi nessuna assegnazione di priorità può aver luogo. Attualmente sto creando una singola query, incluse tutte le parole chiave, per tutti e 3 i campi dei criteri. (Più dichiarazioni di AND / OR )

La mia query corrente assomiglia a questa:

Termine di ricerca: qualcosa di lucido da qualche parte Query formulate:

select * from table where ((cl_address LIKE @something OR cl_name LIKE @something
OR cl_key_words LIKE @something) OR (cl_address LIKE @somewhere OR cl_name LIKE
@somewhere OR cl_key_words LIKE @somewhere) OR (cl_address LIKE @shiny OR cl_name LIKE 
@shiny OR cl_key_words LIKE @shiny))

Per risolvere questo, dovrei eseguire una query per ogni criterio, per ogni parola chiave, per ogni campo indirizzo, per ogni nome ...

Questo può comportare più di 10 query per ricerca ... anche se "funzionerebbe" ...

Come fanno i grandi ragazzi a fare questo?

P.S. Quanto sopra è il mio cervello bambino ... e non basato su qualcosa di diverso dalla mia stessa logica .. che può, o non può, essere imperfetto: -)

    
posta Louis van Tonder 24.02.2014 - 15:44
fonte

0 risposte

Leggi altre domande sui tag