2011-12-03 14 views
5

Voglio implementare una semplice ricerca nella mia applicazione, in base alla query di ricerca che ho. Diciamo che ho un array contenente 2 paragrafi o articoli e voglio cercare in questi articoli per argomento correlato o parole chiave correlate che inserisco.Come implementare una semplice ricerca stringa

Ad esempio:

//this is my search query 
string mySearchQuery = "how to play with matches"; 

//these are my articles 
string[] myarticles = new string[] {"article 1: this article will teach newbies how to start fire by playing with the awesome matches..", "article 2: this article doesn't contain anything"}; 

Come posso ottenere il primo articolo in base alla query di ricerca che ho fornito sopra? Qualche idea?

risposta

6

questa sarebbero tornati qualsiasi stringa in myarticles che contiene tutte le parole mysearchquery:

var tokens = mySearchQuery.Split(' '); 
var matches = myarticles.Where(m => tokens.All(t => m.Contains(t))); 

foreach(var match in matches) 
{ 
    // do whatever you wish with them here 
} 
+0

si sarebbe probabilmente vuole fare un-case insensitive confrontare se questa tecnica è utilizzata (vale a dire in modo Corrisponde alle partite delle partite). ;) –

+0

sai come si confronta, in termini di velocità, con l'uso di regex ?? – GameAlchemist

+0

È possibile migliorare ulteriormente utilizzando string.ToLower(). Quindi non devi preoccuparti delle lettere maiuscole. –

1

Sono sicuro che si può ottenere un buon framework per la ricerca di stringhe, perché è un argomento ampio e ha molte regole di ricerca.

Ma per questo semplice esempio, prova a dividere la query di ricerca con "", per ogni parola fai una semplice ricerca stringa, se la trovi, aggiungi 1 punto alla corrispondenza di ricerca del paragrafo, alla fine restituisci il paragrafo con il maggior numero di punti ...

Problemi correlati