lucene.net中API的使用说明

1、索引的建立

  1.1把索引建立在内存中

      Directory directory=new RAMDirectory();

  1.2把索引建立在磁盘中

      Directory directory=new FSDirectory.GetDirectory(@"D:\project\index", false);

     //para0:索引建立的路径

     //para1:ture表示若索引已经存在,则删除重新建立;false表示索引不存在则建立,若存在则不建立;

  1.3从磁盘上或者数据库中读取内容建立索引结构

        Analyzer analyzer = new StandardAnalyzer(Version.LUCENE_CURRENT);//分词器,也可以选用其他的分析器

       IndexWriter iwriter = new IndexWriter(directory, analyzer, true, new IndexWriter.MaxFieldLength(25000));//四个参数都比较固定

        Document doc = new Document();//一个doc概念上相等于一条记录,会含有一些属性字段来表示各个与之相关的数据

       doc.add(new Field("fieldname","fieldContent",Field.Store.YES,Field.Index.ANALYZED));

         //para0:表示在属性字段的名称

         //para1:表示属性字段的相对应的值,其来源可能是数据库中的值,也可能是来源于一个txt文件中的值。

        //para2:表示是否存储

        //para3:表示是否拆分建立索引

       para2和 para3的四种组合,TT表示既存储有索引,一般适合于title等内容比较小。TF表示只存储不索引,一般是用来排序用的。FT表示只索引不存储,一般适合于content等内容较大,但比较重要,希望建立索引的字段。

       iwriter.AddDocument(doc);//把doc加入到索引中。

2、如何搜索

  2.1 搜索器的建立

       IndexSearcher isearcher = new IndexSearcher(directory, true); // read-only=true

  2.2 query的构造和相关语法

     2.2.1最简单的query

           QueryParser parser=new QueryParser("content",analyzer);

           Query query=parser.Parse(key);//key:string,使用户输入的想要查询的关键词

           //para0为属性字段,表示要去那个字段里去查询

          // para1为分析器,为建立索引的分析器一样即可。

     2.2.2 搜索的结果

           Hits hits=isearcher.Search(query);

           //SortField[] sortOrder={newSortField("time",true),new SortField("fans",SortField.LONG,true)};//true表示降序

           //Sort sort=new Sort(sortOrder);

           //Hits hits=isearcher.Seach(query,sort);

           //Hits  hits=iseacher.Search(query,Sort.RELEVANCE);//按照相关度排序

          for (int i = 0; i < hits.Length(); i++)
                {
                    Document hitDoc = hits.Doc(i);//找到命中的文档
                    Console.Write(hitDoc.Get("name") + " " + hitDoc.Get("fans") + " " + hitDoc.Get("gender") + " " + hitDoc.Get("time"));
                    Console.WriteLine(hitDoc.Get("content"));
                }

         

         

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值