Code代码片断(5do8)

GDI+控件线程IO流ADO.NET接口类,函数语法

新主题
c#分析 meta标签
lucene.net高亮,查询
7zip压缩cookie
lucene.net一个建立,查询...
c#获取IP
lucene.net 教程
c#汉字转拼音
.net json 范例
c#格式化日期
获取IIS的所有网站信息
说话自由

首页 » .NET/C# » 类,函数 »

lucene.net一个建立,查询的小例子

标签: lucene.net
using System;
using System.Collections.Generic;
using System.Text;
using Lucene.Net;
using Lucene.Net.Analysis;
using Lucene.Net.Analysis.Standard;
using Lucene.Net.Documents;
using Lucene.Net.Index;
using Lucene.Net.QueryParsers;
using Lucene.Net.Search;
using Lucene.Net.Store;
using Lucene.Net.Util;

namespace ConsoleApplication1.Lucene
{
    public class GoTest
    {
        public static void Main(){
            LuceneTest ot=new LuceneTest();
            Console.ReadLine();
        }
    }
  public class LuceneTest
  {
    private const string FieldName = "name";
    private const string FieldValue = "value";
    private Directory directory = FSDirectory.GetDirectory(System.IO.Path.Combine(System.Environment.CurrentDirectory,"indexfiles"), true);
    //private Directory directory = new RAMDirectory();
    private Analyzer analyzer = new StandardAnalyzer();

    public LuceneTest()
    {
        Index();
        Search();
    }

    private void Index()
    {
      IndexWriter writer = new IndexWriter(directory, analyzer, true);
      writer.SetMaxFieldLength(1000);
      
      for (int i = 1; i <= 100; i++)
      {
        Document document = new Document();

        document.Add(new Field(FieldName, "name" + i, Field.Store.YES, Field.Index.UN_TOKENIZED));
        document.Add(new Field(FieldValue, "Hello, World!", Field.Store.YES, Field.Index.TOKENIZED));

        writer.AddDocument(document);
      }

      writer.Optimize();
      writer.Close();
    }

    private void Search()
    {
        
        //Query query = MultiFieldQueryParser.Parse(new string[]{"name*"}, new string[] { FieldName, FieldValue }, analyzer);

        //Query query1 = new TermQuery(new Term(FieldValue, "name1")); 
        Query query1 = new WildcardQuery(new Term(FieldName, "name*")); 
        IndexReader reader = IndexReader.Open(directory);
        IndexSearcher searcher = new IndexSearcher(reader);
        Hits hits = searcher.Search(query1);



    

      
      Console.WriteLine("符合条件记录:{0}; 索引库记录总数:{1}", hits.Length(), searcher.Reader.NumDocs());
      for (int i = 0; i < hits.Length(); i++)
      {
        int docId = hits.Id(i);
        string name = hits.Doc(i).Get(FieldName);
        string value = hits.Doc(i).Get(FieldValue);
        float score = hits.Score(i);

        Console.WriteLine("{0}: DocId:{1}; Name:{2}; Value:{3}; Score:{4}", 
          i + 1, docId, name, value, score);
      }

      searcher.Close();
    }
  }
}

ccdot写于2008-9-18 11:24:35

如果愿意,请留下你观点或者感受...
称呼*
内容*
验证码*