Question

J'essaie d'écrire une application WinForms, qui permet de rechercher un fichier, qui contient une chaîne écrite dans TextBox (appuyez recherché cette chaîne

Ces fichiers sont principalement .doc et .xls Je pense que la recherche dans DOC peut être plus facile, mais dans les fichiers Excel, les cellules peuvent avoir des codages différents que j'ai essayé de "lire" ces fichiers, en les ouvrant dans Notepad ++, et j'ai trouvé que les cellules avec seulement des caractères latins étaient faciles à trouver, mais ceux avec des caractères polonais avaient un codage de deux octets

Dans Windows Construit In Search, il n'y avait aucun problème, il a pu dire que dans certains fichiers de test, il y a ma chaîne qui contient des caractères spéciaux polonais

Donc, ma question est essentiellement, s'il existe une méthode pour utiliser ce moteur de recherche intégré Windows pour mon application (comme je l'ai écrit, je dois trouver uniquement des noms de fichiers), ou peut-être que vous avez une autre idée, comment je peux écrire un simple Recherche multi-fichiers?

Était-ce utile?

La solution

Vous voulez probablement utiliser le SDK de recherche Windows.

Autres conseils

Vous pouvez interagir avec la recherche Windows dans votre code, ce qui lui permet de faire le levage de la recherche de plusieurs types de fichiers. Voir cet article MSDN pour plus d'informations:

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

Consultez ce site Web sur l'utilisation du API d'indexation Windows. Il fait référence à asp.net mais le code est en C #.

Extrait ci-dessous:

            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;  

            }  
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top