lucene.net中API的使用说明

本文介绍如何使用Lucene建立内存及磁盘索引,并详细解析文档字段的存储与索引策略。此外,还提供了搜索器的创建方法、查询构造及结果处理的示例。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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"));
                }

         

         

资源下载链接为: https://pan.quark.cn/s/f989b9092fc5 HttpServletRequestWrapper 是 Java Servlet API 中的一个工具类,位于 javax.servlet.http 包中,用于对 HttpServletRequest 对象进行封装,从而在 Web 应用中实现对 HTTP 请求的拦截、修改或增强等功能。通过继承该类并覆盖相关方法,开发者可以轻松地自定义请求处理逻辑,例如修改请求参数、添加请求头、记录日志等。 参数过滤:在请求到达处理器之前,可以对请求参数进行检查或修改,例如去除 URL 编码、过滤敏感信息或进行安全检查。 请求头操作:可以修改或添加请求头,比如设置自定义的 Content-Type 或添加认证信息。 请求属性扩展:在原始请求的基础上添加自定义属性,供后续处理使用。 日志记录:在处理请求前记录请求信息,如 URL、参数、请求头等,便于调试和监控。 跨域支持:通过添加 CORS 相关的响应头,允许来自不同源的请求。 HttpServletRequestWrapper 通过继承 HttpServletRequest 接口并重写其方法来实现功能。开发者可以在重写的方法中添加自定义逻辑,例如在获取参数时进行过滤,或在读取请求体时进行解密。当调用这些方法时,实际上是调用了包装器中的方法,从而实现了对原始请求的修改或增强。 以下是一个简单的示例,展示如何创建一个用于过滤请求参数的包装器: 在 doFilter 方法中,可以使用 CustomRequestWrapper 包装原始请求: 这样,每当调用 getParameterValues 方法时,都会先经过自定义的过滤逻辑。 HttpServletRequestWrapper 是 Java Web 开发中一个强大的工具,它提供了灵活的扩展性,允许开发者
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值