Attualmente sto pianificando un progetto imminente e sto cercando un algoritmo per la ricerca di un database.
La ricerca è la seguente; Ci saranno alcuni criteri (o campi) specificatamente etichettati e vorrei trovare qualsiasi oggetto in cui i suoi campi corrispondano ai criteri specificati. Inoltre, è necessario classificare i risultati parziali in base alle corrispondenze numeriche per ciascun campo.
Ecco un esempio -
Person 1
Name: John
Occupation: Developer
Favourite Colour: Blue
Person 2
Name: John
Occupation: Manager
Favourite Colour: Blue
Person 3
Name: John
Occupation: Developer
Favourite Colour: Green
Person 4
Name: Larry
Occupation: Mailman
Favourite Colour: Red
Search Criteria
Name: John
Occupation: Developer
Favourite Colour: Blue
Results
Rank 1
Person 1
Rank 2
Person 2
Person 3
I ranghi non sarebbero visibili ma gestiranno l'ordine della lista dei risultati.
Potrei farlo abbastanza facilmente per un piccolo set di dati, ad esempio JavaScript;
results = [];
for(var i = 0; i < objects.length; i++) {
var result = _.intersection(criteria, object[i]);
if(result.length > 0) {
object[i].rank = result.length;
results.push(object[i])
}
}
return results (and order by rank)
Ovviamente questo non funzionerà quando si interroga un db ma spero che qualcuno molto più intelligente di me possa indicarmi la giusta direzione. Mi sento come se ci fosse una soluzione a questo fuori ed è probabilmente semplice, ma il mio Google-fu mi sta fallendo.