.NET рдореЗрдВ Xapian рдХреЗ рд╕рд╛рде рдЕрдиреБрдХреНрд░рдордг рдФрд░ рдЦреЛрдЬ

рдпрджрд┐ рдЬрд╝рд╛рдкрд┐рдпрди рд╢рдмреНрдж рдЖрдкрдХреЗ рд▓рд┐рдП рдЕрдкрд░рд┐рдЪрд┐рдд рд╣реИ, рддреЛ рдореЗрд░рд╛ рд╕реБрдЭрд╛рд╡ рд╣реИ рдХрд┐ рдЖрдк рдПрдХ рдЫреЛрдЯрд╛ рд▓реЗрдЦ рдкрдврд╝реЗрдВред

рд╕рдВрдХреНрд╖реЗрдк рдореЗрдВ, Xapian рдкрд╛рда рдЬрд╛рдирдХрд╛рд░реА рдХреЛ рдЕрдиреБрдХреНрд░рдорд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП C ++ рдореЗрдВ рд▓рд┐рдЦреЗ рдЧрдП рдЯреВрд▓ рдХрд╛ рдПрдХ рд╕реЗрдЯ рд╣реИ, рдЬрд┐рд╕рдореЗрдВ рдЕрдиреБрдХреНрд░рдорд┐рдд рдЬрд╛рдирдХрд╛рд░реА рдХреЗ рдбреЗрдЯрд╛рдмреЗрд╕ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдЦреЛрдЬ рдХрд░рдиреЗ рдХреА рдХреНрд╖рдорддрд╛ рд╣реИред рдЗрд╕реЗ рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рд╕реНрдерд╛рдкрд┐рдд рд╕рд░реНрд╡рд░ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИ, рдЗрд╕рдХреЗ рдкреБрд╕реНрддрдХрд╛рд▓рдп рдкрд░реНрдпрд╛рдкреНрдд рд╣реИрдВред рдпрд╣ рд▓рд╛рдЦреЛрдВ рджрд╕реНрддрд╛рд╡реЗрдЬреЛрдВ рдореЗрдВ рдорд╛рдкреА рдЧрдИ рдмрдбрд╝реА рдорд╛рддреНрд░рд╛ рдореЗрдВ рдЬрд╛рдирдХрд╛рд░реА (1.5Tb рддрдХ рд╕рддреНрдпрд╛рдкрд┐рдд) рдХреА рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХрд░ рд╕рдХрддрд╛ рд╣реИред рдпрд╣ Sphinx рдФрд░ Apache Lucene рдХрд╛ рдПрдХ рдкреНрд░рддрд┐рд╕реНрдкрд░реНрдзреА рдЙрддреНрдкрд╛рдж рд╣реИред

рдореБрдЭреЗ .Net рд╕реЗ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреА рдЙрдирдХреА рдХреНрд╖рдорддрд╛ рдХреЗ рд▓рд┐рдП рдЗрди рддреАрди рдЙрддреНрдкрд╛рджреЛрдВ рд╕реЗ рдЪреБрдирд╛ рдЧрдпрд╛ рдерд╛ред







рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ, рдЖрдкрдХреЛ .Net рдХреЗ рд▓рд┐рдП Xapian dll 'ki рдбрд╛рдЙрдирд▓реЛрдб рдХрд░рдирд╛ рд╣реЛрдЧрд╛ ред

рдлрд┐рд░ рдПрдХ рдФрд░ рд╕рд╣рд╛рдпрдХ dll - Zlib1.dll , рдЗрд╕рдХреЗ рдмрд┐рдирд╛, рдЕрдкрд╡рд╛рджреЛрдВ рдХреЛ C ++ рдореЗрдВ рд╕рдВрдХрд▓рд┐рдд рдПрдХ рд░реИрдкрд┐рдВрдЧ рдбреАрдПрд▓ рддрдХ рдкрд╣реБрдВрдЪрдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░рддреЗ рд╕рдордп рдлреЗрдВрдХ рджрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред



рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдХрд╛рдо рдХреЗ рд▓рд┐рдП, рдпрд╣ рдЖрд╡рд╢реНрдпрдХ рд╣реИред рдЖрдк рдПрдХ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдмрдирд╛ рд╕рдХрддреЗ рд╣реИрдВред XapianCSharp.dll рдХреЛ рддреБрд░рдВрдд рд╕рдВрджрд░реНрдн рдореЗрдВ рдЬреЛрдбрд╝рд╛ рдЬрд╛рддрд╛ рд╣реИред рд╣рдо рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдореЗрдВ (рдХреЗрд╡рд▓ рд╕рд╛рдордЧреНрд░реА рдХреЗ рд░реВрдк рдореЗрдВ) _XapianSharp.dll рдФрд░ zlib1.dll рдЬреЛрдбрд╝рддреЗ рд╣реИрдВ, рдФрд░ рдХреЙрдкреА рдХреЛ рдЖрдЙрдЯрдкреБрдЯ рдбрд╛рдпрд░реЗрдХреНрдЯрд░реА рдореЗрдВ рд╣рдореЗрд╢рд╛ рдХреА рддрд░рд╣ рдЪрд┐рд╣реНрдирд┐рдд рдХрд░рддреЗ рд╣реИрдВред



рд╣рдо рдХрд╛рд░реНрдп рдХреЗ рдкрд░реАрдХреНрд╖рдг рдХреЗ рд▓рд┐рдП рджреЛ рдХрд╛рд░реНрдп рдХрд░рддреЗ рд╣реИрдВ:

.... using Xapian; .... //   ,       //    string xapianBase="H:\\XapianDB\\xap.db"; .... //    //  private void IndexFolder(string path) { try { if (Directory.Exists(path)) { string[] files=Directory.GetFiles(tbIndexFolder.Text); using (WritableDatabase database=new WritableDatabase(xapianBase, Xapian.Xapian.DB_CREATE_OR_OPEN)) { using (TermGenerator indexer=new TermGenerator()) { using (Stem stemmer=new Xapian.Stem("russian")) { indexer.SetStemmer(stemmer); foreach (string file in files) { using (Document doc=new Document()) { //    ,       doc.SetData(file); indexer.SetDocument(doc); //      indexer.IndexText(File.ReadAllText(file, Encoding.GetEncoding(1251))); //   database.AddDocument(doc); } } } } } } } catch (Exception ex) { Write("Exception: "+ex.ToString()); } } private void Search(string searchText) { try { //     using (Database database=new Database(xapianBase)) { using (Enquire enquire=new Enquire(database)) { using (QueryParser qp=new QueryParser()) { using (Stem stemmer=new Stem("russian")) { Write(stemmer.GetDescription()); qp.SetStemmer(stemmer); qp.SetDatabase(database); qp.SetStemmingStrategy(QueryParser.stem_strategy.STEM_SOME); using (Query query=qp.ParseQuery(searchText)) { Write("Parsed query is: "+query.GetDescription()); enquire.SetQuery(query); //         //     100  MSet matches=enquire.GetMSet(0, 100); Write(String.Format("{0} results found.", matches.GetMatchesEstimated())); Write(String.Format("Matches 1-{0}:", matches.Size())); //  MSetIterator m=matches.Begin(); //   while (m!=matches.End()) { Write(String.Format("{0}: {1}% docid={2} [{3}]\n", m.GetRank()+1, m.GetPercent(), m.GetDocId(), m.GetDocument().GetData())); ++m; } } } } } } } catch (Exception ex) { Write("Exception: "+ex.ToString()); } }
      
      







рдЕрдкрдиреЗ рд╕реНрд╡рд╛рдж рдХреЗ рд▓рд┐рдП рд▓рд┐рдЦреЗрдВ рдлрд╝рдВрдХреНрд╢рди рд▓рд┐рдЦреЗрдВред



рдЕрдм рдкрд╛рда рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреЗ рд╕рд╛рде рдПрдХ рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рдмрдирд╛рдПрдВ, рдпрд╛ рдореМрдЬреВрджрд╛ рдПрдХ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВ, IndexFolder (directory_name) рдХреЛ рдХреЙрд▓ рдХрд░реЗрдВ, рддрдм рддрдХ рдкреНрд░рддреАрдХреНрд╖рд╛ рдХрд░реЗрдВ рдЬрдм рддрдХ рдХрд┐ рдлрд╝рд╛рдЗрд▓реЗрдВ рдЕрдиреБрдХреНрд░рдорд┐рдд рди рд╣реЛрдВред рдФрд░ рд╣рдо рдЦреЛрдЬ рдХреЛ рдХреЙрд▓ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдЦреЛрдЬ рдХреЗ рд▓рд┐рдП рдХреАрд╡рд░реНрдб рдХреЗ рд╕рд╛рде рдПрдХ рд╕реНрдЯреНрд░рд┐рдВрдЧ рдкрд╛рд╕ рдХрд░рдирд╛, рдПрдХ рд╕реНрдерд╛рди рджреНрд╡рд╛рд░рд╛ рдЕрд▓рдЧ рдХрд┐рдпрд╛ рдЧрдпрд╛ред



рдкрд░реАрдХреНрд╖рдгред


рд▓реМрд╣ рд╡рд┐рдиреНрдпрд╛рд╕:

рдЗрдВрдЯреЗрд▓ рдкреЗрдВрдЯрд┐рдпрдо III 996Mhz

рд░рд╛рдо 256Mb



рдЕрдиреБрдХреНрд░рдорд┐рдд рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреА рд╕рдВрдЦреНрдпрд╛: 641489

рдЕрдиреБрдХреНрд░рдорд┐рдд рдлрд╛рдЗрд▓реЗрдВ: 2,38 рдЬреАрдмреА



рдлрд╝рд╛рдЗрд▓ рдЕрдиреБрдХреНрд░рдордг рд╕рдордп: рдПрдХ рд╕рдкреНрддрд╛рд╣ рд╕реЗ рдЕрдзрд┐рдХ (рд╣рд╛рд░реНрдбрд╡реЗрдпрд░ рдХреЛ рдпрд╛рдж рд░рдЦреЗрдВ, 4x рдХреЛрд░ рдкрд░ рдСрдкрд░реЗрд╢рди рдХреЛ рд╕рдВрднрд╡рддрдГ рдХрдИ рдШрдВрдЯреЗ рд▓рдЧреЗрдВрдЧреЗ, рддрджрдиреБрд╕рд╛рд░ рд╕реНрд╡реИрдк рднреА рдХрдИ рдмрд╛рд░ рдкреНрд░рджрд░реНрд╢рди рдХрдо рдХрд░ рджреЗрддрд╛ рд╣реИ)ред

рдЗрдВрдбреЗрдХреНрд╕рд┐рдВрдЧ рд▓реЛрдб

рдЫрд╡рд┐



рддрд╛рд▓рд┐рдХрд╛ рдФрд╕рдд рдЦреЛрдЬ рд╕рдордп

рд╢рдмреНрдж рдЧрдгрдирд╛ рдЦреЛрдЬ рд╕рдордп
1 1 1883 рдорд┐ред
1 2 28 рдПрдордПрд╕
1 3 рейрез рдорд┐
2 1 175 рдорд┐
2 2 36 рдПрдордПрд╕
2 3 41 рдПрдордПрд╕
3 1 1074 рдорд┐ред
3 2 35 рдПрдордПрд╕
3 3 37 рдПрдордПрд╕




рд╕рдВрдХреЗрддрдХ рдмрд╣реБрдд рдЖрд╢рд╛рд╡рд╛рджреА рд╣реИрдВ, рдЦрд╛рд╕рдХрд░ рдРрд╕реА рдХрдордЬреЛрд░ рдХрд╛рд░ рдХреЗ рд▓рд┐рдПред



рд╕реВрддреНрд░реЛрдВ рдХрд╛ рдХрд╣рдирд╛ рд╣реИ:

рдХреЛрдбрдкреНрд░реЛрдЬреЗрдХреНрдЯ рдкрд░ рдЕрдиреБрдЪреНрдЫреЗрдж

рдЖрдзрд┐рдХрд╛рд░рд┐рдХ рд╡реЗрдмрд╕рд╛рдЗрдЯ



All Articles