2013-06-30 19 views
18

Sto cercando un codice che ottenga risultati della ricerca di testo completo mediante la ricerca di Windows (dovrebbe essere disponibile in Vista, 7 e 8 per impostazione predefinita).Ricerca di Windows - ricerca di testo completo in C#

Ho trovato alcune domande qui e alcuni testi su msdn, ma nessuno di loro ha un codice esatto che funzioni. Ho provato con Windows API Code Pack (come è menzionato come una delle interfacce per la ricerca di Windows), ma restituisce risultati solo per i nomi di file, non per il testo completo.

+0

Cosa intendi per 'FullText'? – Shaharyar

+1

Testo completo significa che la ricerca di Windows cercherà il testo (contenuto) di file di documento (come .txt, .doc, .docx, .pdf), non solo un nome di file o le sue proprietà. Se esegui una ricerca con Windows Explorer, è possibile, quindi dovrebbe essere possibile. –

risposta

27

Ecco il codice che funziona - nell'esempio ho fatto per cercare la parola "fittizio" nella cartella desktop:

string connectionString = "Provider=Search.CollatorDSO;Extended Properties=\"Application=Windows\""; 
OleDbConnection connection = new OleDbConnection(connectionString); 

string query = @"SELECT System.ItemName FROM SystemIndex " + 
    @"WHERE scope ='file:" + System.Environment.GetFolderPath(Environment.SpecialFolder.Desktop) + "' and FREETEXT('dummy')"; 
OleDbCommand command = new OleDbCommand(query, connection); 
connection.Open(); 

List<string> result = new List<string>(); 

OleDbDataReader reader = command.ExecuteReader(); 
while (reader.Read()) 
{ 
    result.Add(reader.GetString(0)); 
} 

connection.Close(); 
+1

Funziona su Windows 8.1 in modalità desktop – slayernoah

+0

Questo non funziona per me se si desidera trovare una parte di una parola. Ad esempio: se il documento conteneva 'dummy', e ho usato il codice sopra per cercare 'dum'. Qualche idea su come usare le wild card qui? L'aggiunta di un '*' sembra non funzionare. – slayernoah

+0

@slayernoah hai provato * per la ricerca? non soluzione – Kiquenet

1

Date un'occhiata all'esempio DSearch. Windows Search Code Samples

Questo è quello che vuoi.

+0

Grazie, ho già trovato la soluzione. Quella era una delle pagine di cui avevo bisogno, ma non era abbastanza (l'esempio sql non spiega la sintassi sql disponibile per la ricerca di Windows, che era necessaria per me e il problema che ho menzionato). Hai il codice completo che funziona nella mia risposta sopra. –

+2

esempio di download di MS link offline :) – zozzancs

Problemi correlati