private void button1_Click(object sender, EventArgs e) // Zobraz abstrakt pre wikipediu
{
if (textBox1.Text.Equals(""))
{
MessageBox.Show("Zadajte cestu k suboru!");
}
else
{
if (textBox3.Text.Equals(""))
{
MessageBox.Show("Vyplňte políčko: Zadajte hľadaný abstrakt!");
}
else
{
//ak nemam este vyskladany index z mojho suboru
if (!MamIndexWiki)
{
directoryWiki = FSDirectory.Open(new DirectoryInfo(Environment.CurrentDirectory + "\\WikiIndex"));
analyzerWiki = new StandardAnalyzer(Version.LUCENE_29);
IndexWriter writer = new IndexWriter(directoryWiki, analyzerWiki, true, IndexWriter.MaxFieldLength.UNLIMITED);
string riadok;
cestaSuborWiki = textBox1.Text;
System.IO.StreamReader subor = new System.IO.StreamReader(cestaSuborWiki);
while ((riadok = subor.ReadLine()) != null)
{
string[] poleAbstrakt = riadok.Split(new string[] { ";|?" }, StringSplitOptions.None);
//ideme indexovat kazdy jeden riadok ktory sme si predtym podelili na title a abstrakt
Document doc = new Document();
doc.Add(new Field("Nadpis", poleAbstrakt[0], Field.Store.YES, Field.Index.ANALYZED));
doc.Add(new Field("Abstrakt", poleAbstrakt[1], Field.Store.YES, Field.Index.NO));
writer.AddDocument(doc);
}
//zavrieme a aktualizujeme zapisovac a ostatne srandy
MamIndexWiki = true;
writer.Optimize();
//writer.Commit();
writer.Close();
MessageBox.Show("Indexovanie súboru prebehlo úspešne!");
}
if (MamIndexWiki)
{
//otvorenie directory na citanie indexov a definovanie hladaca
IndexReader indexReader = IndexReader.Open(directoryWiki, true);
Searcher indexSearch = new IndexSearcher(indexReader);
//vytvorime samotny vyhladavac, definujeme verziu a pole v ktorom chceme hladat, odovzdame dopyt zadany na vstupe
QueryParser queryParser = new QueryParser(Version.LUCENE_29, "Nadpis", analyzerWiki);
Query query = queryParser.Parse(textBox3.Text);
//samotne hladanie a naplnenie struktury pre vysledky - chceme prvych 20 vysledkov
TopDocs resultDocs = indexSearch.Search(query, 20);
//najdene vysledky hladania
var hits = resultDocs.scoreDocs;
richTextBox1.Text = "";
abstraktWiki = "";
textBox4.Text = resultDocs.totalHits.ToString();
if (resultDocs.totalHits > 0)
{
foreach (var hit in hits)
{
var documentFromSearcher = indexSearch.Doc(hit.doc);
richTextBox1.Text += documentFromSearcher.Get("Nadpis") + ": " + documentFromSearcher.Get("Abstrakt") + "\n";
abstraktWiki += documentFromSearcher.Get("Abstrakt") + " ";
}
}
else
{
richTextBox1.Text = "Nenasla sa ziadna zhoda";
}
}
}
}
}