girando ho trovato come fare una select che considera la rilevanza della query
Ho aggiunto questa funzione:
function Rilevanza(QueRic,MyCampo)
QueRic=replace(QueRic,"`","")
QueRic=replace(QueRic,"'","")
Qsql = "("
Primo=true
QArray = split(QueRic," ")
for Qi = 0 to uBound(QArray)
if Len(QArray(Qi))>3 then
if Primo then
Qsql = Qsql & "if(instr(["&MyCampo&"],'"&QArray(Qi)&"')=0,0,1)"
Primo=false
else
Qsql = Qsql & "+" & "if(instr(["&MyCampo&"],'"&QArray(Qi)&"')=0,0,1)"
end if
end if
next
Qsql=Qsql&")"
Rilevanza=Qsql
end function
se ad esempio devo cercare "pizzeria corsaro nero" la select risultante è la seguente:
SELECT *, (if(instr([nome],'pizzeria')=0,0,1)+if(instr([nome],'corsaro')=0,0,1)+if(instr([nome],'nero')=0,0,1)) As relevante From MyTable where g_lat=43 and (nome LIKE '%pizzeria%' OR nome LIKE '%corsaro%' OR nome LIKE '%nero%' ) order by rilevante
Ho provato con IIF, senza le quadre ... ma non funziona. Non mi da errore ma mi torna un recordset pieno di campi nulli.

Rispondi quotando
