Je fais un projet qui dois permettre de faire des recherches sur un fichier texte j'utilise lucene mais sa ne fonctionne pas. voila mon code si qqun a une idé ou est ma fautemerci d'avanceee !!!!
Code d'indexation:
Code C# : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20 //Création d'un nouvel index. IndexWriter writer = new IndexWriter(@"C:\Users\schaffora\Desktop\Test2\", new SimpleAnalyzer(), true); //Création d'un nouveau document. Document doc = new Document(); //Céation de la variable qui va contenir le texte. string rawText; //Choix du type d'encodage Encoding objEncoding = Encoding.Default; // Lecture du fichier jusqu'à sa fin et récupération du texte dans rawText using (StreamReader sr = new StreamReader(path, objEncoding)) { rawText = (sr.ReadToEnd()); } doc.Add(Field.Keyword("text", rawText)); doc.Add(Field.Keyword("path", path)); // ajout du document writer.AddDocument(doc); writer.Optimize(); writer.Close(); // Fermeture de l'index pour permettre une meilleure performance
Code pour la recherche :
Code C# : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15 Query query = new TermQuery(new Term("postBody", tbxMot.Text)); //Choix de l'index (index que l'on a créé juste en dessus) IndexSearcher searcher = new IndexSearcher(@"C:\Users\schaffora\Desktop\Test2\"); Hits hits = searcher.Search(query); DataTable dt = new DataTable(); dt.Columns.Add("path", typeof(string)); dt.Columns.Add("sample", typeof(string)); for (int i = 0; i < hits.Length(); i++) { Document doc1 = hits.Doc(i); DataRow row = dt.NewRow(); row["path"] = doc1.Get("path"); dt.Rows.Add(row); }
Partager