Pregunta

Estoy tratando de escribir una aplicación WinForms, que permita la búsqueda de archivos, que contengan una cadena escrita en el cuadro de texto (presione Win+F y comprenda;)) En esta aplicación, hay una lista de archivos y directorios, que debe ser Busqué esta cadena

Esos archivos son en su mayoría .doc y .xls, creo, que buscar en DOC puede ser más fácil, pero en los archivos de Excel, las celdas pueden tener diferentes codificaciones que he intentado "leer" esos archivos, abriéndolos en Notepad ++, y encontré que las celdas con solo caracteres latinos eran fáciles de encontrar, pero aquellas con caracteres polacos tenían una codificación de dos bytes

En Windows incorporados en la búsqueda, no había problema, pudo decir que en algunos archivos de prueba hay mi cadena que contiene caracteres especiales polacos

Entonces, mi pregunta básicamente es que si hay un método para usar este motor de búsqueda incorporado de Windows para mi aplicación (como escribí, necesito encontrar solo nombres de archivo), o tal vez tenga otra idea, cómo puedo escribir una simple ¿Búsqueda de múltiples archivos?

¿Fue útil?

Solución

Probablemente quieras usar el Search SDK de Windows.

Otros consejos

Puede interactuar con la búsqueda de Windows en su código, lo que le permite hacer el trabajo pesado de buscar múltiples tipos de archivos. Consulte este artículo de MSDN para obtener más información:

http://msdn.microsoft.com/en-us/library/bb266517%28v=vs.85%29.aspx

Consulte este sitio web sobre el uso del API de indexación de Windows. Se refiere a ASP.NET pero el código está en C#.

Fragmento a continuación:

            string  QueryText = "asp alliance"; //The search string
            string CatalogName = "searchcatalog"; //The name of your Index Server catalog
            int NumberOfSearchResults = 0;  
            DataSet SearchResults = new DataSet();  

            //Prevent SQL injection attacks - further security measures are recommended  
            QueryText = QueryText.Replace("'", "''");  

            //Build the search query  
            string SQL = "SELECT doctitle, vpath, Path, Write, Size, Rank ";  
            SQL += "FROM \"" + CatalogName + "\"..SCOPE() ";  
            SQL += "WHERE";  
            SQL += " CONTAINS(Contents, '" + QueryText + "') ";  
            SQL += "AND NOT CONTAINS(Path, '\"_vti_\"') ";  
            SQL += "AND NOT CONTAINS(FileName, '\".ascx\" OR \".config\" OR \".css\"') ";  
            SQL += "ORDER BY Rank DESC";  

            //Connect to Index Server and perform search query  
            try   
            {  
                OleDbConnection IndexServerConnection = new OleDbConnection("Provider=msidxs;");  
                OleDbCommand dbCommand = new OleDbCommand(SQL, IndexServerConnection);  

                OleDbDataAdapter IndexServerDataAdapter = new OleDbDataAdapter();  
                IndexServerDataAdapter.SelectCommand = dbCommand;  

                IndexServerDataAdapter.Fill(SearchResults);  
                NumberOfSearchResults = SearchResults.Tables[0].Rows.Count;  
            }  
            catch (Exception ExceptionObject)  
            {  
                //Query failed so display an error message  
                NumberOfSearchResults = 0;  
                LabelNumberOfResults.Text = "Problem with retrieving search results due to: " + ExceptionObject.Message;  
                DataGridSearchResults.Visible = false;  

            }  
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top