索引生成功能
1
using
System;
2 using System.Collections.Generic;
3 using System.Web;
4 using System.Web.UI;
5 using System.Web.UI.WebControls;
6
7 using StandardAnalyzer = Lucene.Net.Analysis.Standard.StandardAnalyzer;
8 using IndexWriter = Lucene.Net.Index.IndexWriter;
9 using FSDirectory = Lucene.Net.Store.FSDirectory;
10 using Version = Lucene.Net.Util.Version;
11
12
13 namespace Demo
14 {
15 public partial class _Default : System.Web.UI.Page
16 {
17 // 生成索引文件的路径
18 private static readonly System.IO.FileInfo INDEX_DIR = new System.IO.FileInfo( " D:\\ProjectsSVN\\ChinaValueApplication\\ChinaValueSearch\\Demo\\index " );
19
20 protected void Page_Load( object sender, EventArgs e)
21 {
22
23 }
24
25 protected void CreateIndex_Click( object sender, EventArgs e)
26 {
27 // 被索引文件的路径
28 System.IO.FileInfo docDir = new System.IO.FileInfo( " E:\\work\\back\\Document\\ " );
29
30 Boolean tmpBool2;
31
32 if (System.IO.File.Exists(docDir.FullName))
33 {
34 tmpBool2 = true ;
35 }
36 else
37 {
38 tmpBool2 = System.IO.Directory.Exists(docDir.FullName);
39 }
40
41 if ( ! tmpBool2)
42 {
43 ltrInfo.Text = " Document directory ' " + docDir.FullName + " ' does not exist or is not readable, please check the path " ;
44 return ;
45 }
46
47 System.DateTime start = System.DateTime.Now;
48
49 try
50 {
51 Boolean EnableCreate = true ;
52
53 if (System.IO.File.Exists( " D:\\ProjectsSVN\\ChinaValueApplication\\ChinaValueSearch\\Demo\\index\\segments " ))
54 {
55 EnableCreate = false ;
56 }
57
58 IndexWriter writer = new IndexWriter(FSDirectory.Open(INDEX_DIR), new StandardAnalyzer(Version.LUCENE_CURRENT), EnableCreate, IndexWriter.MaxFieldLength.LIMITED);
59 ltrInfo.Text += " Indexing to directory ' " + INDEX_DIR + " '... <br> " ;
60 IndexDocs(writer, docDir);
61 ltrInfo.Text += " Optimizing... <br> " ;
62 writer.Optimize();
63 writer.Close();
64
65 System.DateTime end = System.DateTime.Now;
66 ltrInfo.Text += " 生成成功 " + (end.Millisecond - start.Millisecond).ToString() + " total milliseconds <br> " ;
67 CreateIndex.Enabled = false ;
68 }
69 catch (System.IO.IOException ex)
70 {
71 ltrInfo.Text += " caught a " + ex.GetType() + " \n with message: " + ex.Message;
72 }
73 }
74
75 private void IndexDocs(IndexWriter writer, System.IO.FileInfo file)
76 {
77 if (System.IO.Directory.Exists(file.FullName))
78 {
79 System.String[] files = System.IO.Directory.GetFileSystemEntries(file.FullName);
80
81 if (files != null )
82 {
83 for ( int i = 0 ; i < files.Length; i ++ )
84 {
85 IndexDocs(writer, new System.IO.FileInfo(files[i]));
86 }
87 }
88 }
89 else
90 {
91 try
92 {
93 writer.AddDocument(FileDocument.Document(file));
94 }
95 catch (System.IO.FileNotFoundException fnfe)
96 {
97 ltrInfo.Text += " FileNotFoundException: " + fnfe.Message;
98 }
99 }
100 }
101 }
102 }
103
2 using System.Collections.Generic;
3 using System.Web;
4 using System.Web.UI;
5 using System.Web.UI.WebControls;
6
7 using StandardAnalyzer = Lucene.Net.Analysis.Standard.StandardAnalyzer;
8 using IndexWriter = Lucene.Net.Index.IndexWriter;
9 using FSDirectory = Lucene.Net.Store.FSDirectory;
10 using Version = Lucene.Net.Util.Version;
11
12
13 namespace Demo
14 {
15 public partial class _Default : System.Web.UI.Page
16 {
17 // 生成索引文件的路径
18 private static readonly System.IO.FileInfo INDEX_DIR = new System.IO.FileInfo( " D:\\ProjectsSVN\\ChinaValueApplication\\ChinaValueSearch\\Demo\\index " );
19
20 protected void Page_Load( object sender, EventArgs e)
21 {
22
23 }
24
25 protected void CreateIndex_Click( object sender, EventArgs e)
26 {
27 // 被索引文件的路径
28 System.IO.FileInfo docDir = new System.IO.FileInfo( " E:\\work\\back\\Document\\ " );
29
30 Boolean tmpBool2;
31
32 if (System.IO.File.Exists(docDir.FullName))
33 {
34 tmpBool2 = true ;
35 }
36 else
37 {
38 tmpBool2 = System.IO.Directory.Exists(docDir.FullName);
39 }
40
41 if ( ! tmpBool2)
42 {
43 ltrInfo.Text = " Document directory ' " + docDir.FullName + " ' does not exist or is not readable, please check the path " ;
44 return ;
45 }
46
47 System.DateTime start = System.DateTime.Now;
48
49 try
50 {
51 Boolean EnableCreate = true ;
52
53 if (System.IO.File.Exists( " D:\\ProjectsSVN\\ChinaValueApplication\\ChinaValueSearch\\Demo\\index\\segments " ))
54 {
55 EnableCreate = false ;
56 }
57
58 IndexWriter writer = new IndexWriter(FSDirectory.Open(INDEX_DIR), new StandardAnalyzer(Version.LUCENE_CURRENT), EnableCreate, IndexWriter.MaxFieldLength.LIMITED);
59 ltrInfo.Text += " Indexing to directory ' " + INDEX_DIR + " '... <br> " ;
60 IndexDocs(writer, docDir);
61 ltrInfo.Text += " Optimizing... <br> " ;
62 writer.Optimize();
63 writer.Close();
64
65 System.DateTime end = System.DateTime.Now;
66 ltrInfo.Text += " 生成成功 " + (end.Millisecond - start.Millisecond).ToString() + " total milliseconds <br> " ;
67 CreateIndex.Enabled = false ;
68 }
69 catch (System.IO.IOException ex)
70 {
71 ltrInfo.Text += " caught a " + ex.GetType() + " \n with message: " + ex.Message;
72 }
73 }
74
75 private void IndexDocs(IndexWriter writer, System.IO.FileInfo file)
76 {
77 if (System.IO.Directory.Exists(file.FullName))
78 {
79 System.String[] files = System.IO.Directory.GetFileSystemEntries(file.FullName);
80
81 if (files != null )
82 {
83 for ( int i = 0 ; i < files.Length; i ++ )
84 {
85 IndexDocs(writer, new System.IO.FileInfo(files[i]));
86 }
87 }
88 }
89 else
90 {
91 try
92 {
93 writer.AddDocument(FileDocument.Document(file));
94 }
95 catch (System.IO.FileNotFoundException fnfe)
96 {
97 ltrInfo.Text += " FileNotFoundException: " + fnfe.Message;
98 }
99 }
100 }
101 }
102 }
103
索引修改功能
1
using
System;
2 using System.Collections.Generic;
3 using System.Web;
4 using System.Web.UI;
5 using System.Web.UI.WebControls;
6
7 using IndexWriter = Lucene.Net.Index.IndexWriter;
8 using FSDirectory = Lucene.Net.Store.FSDirectory;
9 using StandardAnalyzer = Lucene.Net.Analysis.Standard.StandardAnalyzer;
10 using Version = Lucene.Net.Util.Version;
11 using Term = Lucene.Net.Index.Term;
12
13 namespace Demo
14 {
15 public partial class UpdateIndex : System.Web.UI.Page
16 {
17 public String index = " D:\\ProjectsSVN\\ChinaValueApplication\\ChinaValueSearch\\Demo\\index " ;
18
19 protected void Page_Load( object sender, EventArgs e)
20 {
21
22 }
23
24 protected void btnUpdate_Click( object sender, EventArgs e)
25 {
26 Boolean EnableCreate = true ;
27
28 if (System.IO.File.Exists(index + " \\segments.gen " ))
29 {
30 EnableCreate = false ;
31 }
32
33 IndexWriter writer = new IndexWriter(FSDirectory.Open( new System.IO.FileInfo(index)), new StandardAnalyzer(Version.LUCENE_CURRENT), EnableCreate);
34
35 // System.IO.FileInfo file = new System.IO.FileInfo(txtID.Text.Trim().Replace("\\", "\\\\"));
36
37 System.IO.FileInfo file = new System.IO.FileInfo( @" E:\work\back\Document\ksp.txt " );
38 writer.UpdateDocument( new Term( " path " , txtID.Text.Trim()), FileDocument.Document(file));
39
40 writer.Close();
41 }
42 }
43 }
44
2 using System.Collections.Generic;
3 using System.Web;
4 using System.Web.UI;
5 using System.Web.UI.WebControls;
6
7 using IndexWriter = Lucene.Net.Index.IndexWriter;
8 using FSDirectory = Lucene.Net.Store.FSDirectory;
9 using StandardAnalyzer = Lucene.Net.Analysis.Standard.StandardAnalyzer;
10 using Version = Lucene.Net.Util.Version;
11 using Term = Lucene.Net.Index.Term;
12
13 namespace Demo
14 {
15 public partial class UpdateIndex : System.Web.UI.Page
16 {
17 public String index = " D:\\ProjectsSVN\\ChinaValueApplication\\ChinaValueSearch\\Demo\\index " ;
18
19 protected void Page_Load( object sender, EventArgs e)
20 {
21
22 }
23
24 protected void btnUpdate_Click( object sender, EventArgs e)
25 {
26 Boolean EnableCreate = true ;
27
28 if (System.IO.File.Exists(index + " \\segments.gen " ))
29 {
30 EnableCreate = false ;
31 }
32
33 IndexWriter writer = new IndexWriter(FSDirectory.Open( new System.IO.FileInfo(index)), new StandardAnalyzer(Version.LUCENE_CURRENT), EnableCreate);
34
35 // System.IO.FileInfo file = new System.IO.FileInfo(txtID.Text.Trim().Replace("\\", "\\\\"));
36
37 System.IO.FileInfo file = new System.IO.FileInfo( @" E:\work\back\Document\ksp.txt " );
38 writer.UpdateDocument( new Term( " path " , txtID.Text.Trim()), FileDocument.Document(file));
39
40 writer.Close();
41 }
42 }
43 }
44
索引查询
1
using
System;
2
3 using FSDirectory = Lucene.Net.Store.FSDirectory;
4 using IndexReader = Lucene.Net.Index.IndexReader;
5 using Searcher = Lucene.Net.Search.Searcher;
6 using IndexSearcher = Lucene.Net.Search.IndexSearcher;
7 using Analyzer = Lucene.Net.Analysis.Analyzer;
8 using StandardAnalyzer = Lucene.Net.Analysis.Standard.StandardAnalyzer;
9 using Version = Lucene.Net.Util.Version;
10 using QueryParser = Lucene.Net.QueryParsers.QueryParser;
11 using Query = Lucene.Net.Search.Query;
12 using TopScoreDocCollector = Lucene.Net.Search.TopScoreDocCollector;
13 using ScoreDoc = Lucene.Net.Search.ScoreDoc;
14 using Document = Lucene.Net.Documents.Document;
15
16 namespace Demo
17 {
18 public partial class SearchIndex : System.Web.UI.Page
19 {
20 private static String index = " D:\\ProjectsSVN\\ChinaValueApplication\\ChinaValueSearch\\Demo\\index " ;
21
22 protected void Page_Load( object sender, EventArgs e)
23 {
24
25 }
26 protected void btnSearch_Click( object sender, EventArgs e)
27 {
28 String field = " contents " ;
29
30 IndexReader reader = IndexReader.Open(FSDirectory.Open( new System.IO.FileInfo(index)), true );
31
32 Searcher searcher = new IndexSearcher(reader);
33 Analyzer analyzer = new StandardAnalyzer(Version.LUCENE_CURRENT);
34
35 QueryParser parser = new QueryParser(field, analyzer);
36
37 Query query = parser.Parse(txtKeyWord.Text.Trim());
38
39 TopScoreDocCollector collector = TopScoreDocCollector.create(searcher.MaxDoc(), false );
40 searcher.Search(query, collector);
41 ScoreDoc[] hits = collector.TopDocs().scoreDocs;
42
43 ltrResult.Text = " 共 " + collector.GetTotalHits().ToString() + " 条记录<br> " ;
44
45 for (Int32 i = 0 ; i < collector.GetTotalHits(); i ++ )
46 {
47 ltrResult.Text += " doc= " + hits[i].doc + " score= " + hits[i].score + " <br> " ;
48 Document doc = searcher.Doc(hits[i].doc);
49 ltrResult.Text += " Path: " + doc.Get( " path " ) + " <br> " ;
50 }
51
52 reader.Close();
53 }
54 }
55 }
2
3 using FSDirectory = Lucene.Net.Store.FSDirectory;
4 using IndexReader = Lucene.Net.Index.IndexReader;
5 using Searcher = Lucene.Net.Search.Searcher;
6 using IndexSearcher = Lucene.Net.Search.IndexSearcher;
7 using Analyzer = Lucene.Net.Analysis.Analyzer;
8 using StandardAnalyzer = Lucene.Net.Analysis.Standard.StandardAnalyzer;
9 using Version = Lucene.Net.Util.Version;
10 using QueryParser = Lucene.Net.QueryParsers.QueryParser;
11 using Query = Lucene.Net.Search.Query;
12 using TopScoreDocCollector = Lucene.Net.Search.TopScoreDocCollector;
13 using ScoreDoc = Lucene.Net.Search.ScoreDoc;
14 using Document = Lucene.Net.Documents.Document;
15
16 namespace Demo
17 {
18 public partial class SearchIndex : System.Web.UI.Page
19 {
20 private static String index = " D:\\ProjectsSVN\\ChinaValueApplication\\ChinaValueSearch\\Demo\\index " ;
21
22 protected void Page_Load( object sender, EventArgs e)
23 {
24
25 }
26 protected void btnSearch_Click( object sender, EventArgs e)
27 {
28 String field = " contents " ;
29
30 IndexReader reader = IndexReader.Open(FSDirectory.Open( new System.IO.FileInfo(index)), true );
31
32 Searcher searcher = new IndexSearcher(reader);
33 Analyzer analyzer = new StandardAnalyzer(Version.LUCENE_CURRENT);
34
35 QueryParser parser = new QueryParser(field, analyzer);
36
37 Query query = parser.Parse(txtKeyWord.Text.Trim());
38
39 TopScoreDocCollector collector = TopScoreDocCollector.create(searcher.MaxDoc(), false );
40 searcher.Search(query, collector);
41 ScoreDoc[] hits = collector.TopDocs().scoreDocs;
42
43 ltrResult.Text = " 共 " + collector.GetTotalHits().ToString() + " 条记录<br> " ;
44
45 for (Int32 i = 0 ; i < collector.GetTotalHits(); i ++ )
46 {
47 ltrResult.Text += " doc= " + hits[i].doc + " score= " + hits[i].score + " <br> " ;
48 Document doc = searcher.Doc(hits[i].doc);
49 ltrResult.Text += " Path: " + doc.Get( " path " ) + " <br> " ;
50 }
51
52 reader.Close();
53 }
54 }
55 }
索引删除
1
using
System;
2
3 using FSDirectory = Lucene.Net.Store.FSDirectory;
4 using IndexReader = Lucene.Net.Index.IndexReader;
5 using StandardAnalyzer = Lucene.Net.Analysis.Standard.StandardAnalyzer;
6 using Version = Lucene.Net.Util.Version;
7 using Directory = Lucene.Net.Store.Directory;
8 using Term = Lucene.Net.Index.Term;
9 using IndexWriter = Lucene.Net.Index.IndexWriter;
10
11 namespace Demo
12 {
13 public partial class DelIndex : System.Web.UI.Page
14 {
15 private static String index = " D:\\ProjectsSVN\\ChinaValueApplication\\ChinaValueSearch\\Demo\\index " ;
16
17 protected void Page_Load( object sender, EventArgs e)
18 {
19 }
20
21 protected void btnDel_Click( object sender, EventArgs e)
22 {
23 try
24 {
25 Directory directory = FSDirectory.Open( new System.IO.FileInfo(index));
26 IndexReader reader = IndexReader.Open(directory, false );
27
28 /// / 删除所有记录
29 // for (int i = 0; i < reader.MaxDoc(); i++)
30 // {
31 // reader.DeleteDocument(i);
32 // }
33
34 if (rdlDel.SelectedValue == " 1 " ) // 根据ID删除记录
35 {
36 Int32 i = Convert.ToInt32(txtID.Text);
37 reader.DeleteDocument(i);
38 ltrResult.Text = " 删除成功 " ;
39 }
40 else if (rdlDel.SelectedValue == " 2 " ) // 根据条件删除记录
41 {
42 Term term = new Term( " path " , txtID.Text.Trim());
43 Int32 num = reader.DeleteDocuments(term);
44 ltrResult.Text = " 删除 " + num.ToString() + " 条记录成功 " ;
45 }
46
47 reader.Close();
48 directory.Close();
49
50 }
51 catch (System.Exception ex)
52 {
53 ltrResult.Text = " caught a " + e.GetType() + " \n with message: " + ex.Message;
54 }
55 }
56
57 protected void btnOptimize_Click( object sender, EventArgs e)
58 {
59 IndexWriter writer = new IndexWriter(FSDirectory.Open( new System.IO.FileInfo(index)), new StandardAnalyzer(Version.LUCENE_CURRENT), false );
60 writer.Commit();
61 writer.Optimize();
62 writer.Close();
63 }
64 }
65 }
2
3 using FSDirectory = Lucene.Net.Store.FSDirectory;
4 using IndexReader = Lucene.Net.Index.IndexReader;
5 using StandardAnalyzer = Lucene.Net.Analysis.Standard.StandardAnalyzer;
6 using Version = Lucene.Net.Util.Version;
7 using Directory = Lucene.Net.Store.Directory;
8 using Term = Lucene.Net.Index.Term;
9 using IndexWriter = Lucene.Net.Index.IndexWriter;
10
11 namespace Demo
12 {
13 public partial class DelIndex : System.Web.UI.Page
14 {
15 private static String index = " D:\\ProjectsSVN\\ChinaValueApplication\\ChinaValueSearch\\Demo\\index " ;
16
17 protected void Page_Load( object sender, EventArgs e)
18 {
19 }
20
21 protected void btnDel_Click( object sender, EventArgs e)
22 {
23 try
24 {
25 Directory directory = FSDirectory.Open( new System.IO.FileInfo(index));
26 IndexReader reader = IndexReader.Open(directory, false );
27
28 /// / 删除所有记录
29 // for (int i = 0; i < reader.MaxDoc(); i++)
30 // {
31 // reader.DeleteDocument(i);
32 // }
33
34 if (rdlDel.SelectedValue == " 1 " ) // 根据ID删除记录
35 {
36 Int32 i = Convert.ToInt32(txtID.Text);
37 reader.DeleteDocument(i);
38 ltrResult.Text = " 删除成功 " ;
39 }
40 else if (rdlDel.SelectedValue == " 2 " ) // 根据条件删除记录
41 {
42 Term term = new Term( " path " , txtID.Text.Trim());
43 Int32 num = reader.DeleteDocuments(term);
44 ltrResult.Text = " 删除 " + num.ToString() + " 条记录成功 " ;
45 }
46
47 reader.Close();
48 directory.Close();
49
50 }
51 catch (System.Exception ex)
52 {
53 ltrResult.Text = " caught a " + e.GetType() + " \n with message: " + ex.Message;
54 }
55 }
56
57 protected void btnOptimize_Click( object sender, EventArgs e)
58 {
59 IndexWriter writer = new IndexWriter(FSDirectory.Open( new System.IO.FileInfo(index)), new StandardAnalyzer(Version.LUCENE_CURRENT), false );
60 writer.Commit();
61 writer.Optimize();
62 writer.Close();
63 }
64 }
65 }