Lunece全文检索搜索引擎

               Lunece全文检索

1,什么是全文检索,

luceneapache软件基金会4 jakarta项目组的一个子项目,是一个开放源代码的全文检索引擎工具包,但它不是一个完整的全文检索引擎,而是一个全文检索引擎的架构,提供了完整的查询引擎和索引引擎,部分文本分析引擎(英文与德文两种西方语言)。Lucene的目的是为软件开发人员提供一个简单易用的工具包,以方便的在目标系统中实现全文检索的功能,或者是以此为基础建立起完整的全文检索引擎。Lucene是一套用于全文检索和搜寻的开源程式库,由Apache软件基金会支持和提供。Lucene提供了一个简单却强大的应用程式接口,能够做全文索引和搜寻。在Java开发环境里Lucene是一个成熟的免费开源工具。就其本身而言,Lucene是当前以及最近几年最受欢迎的免费Java信息检索程序库。人们经常提到信息检索程序库,虽然与搜索引擎有关,但不应该将信息检索程序库与搜索引擎相混淆。

Lucene3.0官网http://lucene.apache.org/core/3_0_0/core/overview-summary.html

2,为什么使用全文检索

现在的检索方案

二,全文检索原理

传统通过数据库搜索,sql语句,模糊查询,大量模糊查询,数据不精准,对数据库性能有很大影响

而全文检索是通过文档中存放索引搜索,对服务器压力,数据处理,优化,减轻数据库压力,有很大帮助。

三,实现主要关键内容:

1,创建索引(索引就是添加的域)

2,索引路径(Directory)

3,Searcher(语法解析器)

4,BooleanQuery(组合查询)

5,BooleanClause()

BooleanClause用于表示布尔查询子句关系的类,
包 括:BooleanClause.Occur.MUST,BooleanClause.Occur.MUST_NOT,BooleanClause.Occur.SHOULD。 

必须包含,不能包含,可以包含三种.有以下6种组合:
a.MUST和MUST:取得连个查询子句的交集。 

b.MUST和MUST_NOT:表示查询结果中不能包含MUST_NOT所对应得查询子句的检索结果。 

c.SHOULD与MUST_NOT:连用时,功能同MUST和MUST_NOT。

d.SHOULD与MUST连用时,结果为MUST子句的检索结果,但是SHOULD可影响排序。

e.SHOULD与SHOULD:表示“或”关系,最终检索结果为所有检索子句的并集。

f.MUST_NOT和MUST_NOT:无意义,检索无结果。

)

四,主要步骤(直接上代码)

  public static final String QUERY_FIELD1 = NAMES;//设置域
    /**
     * 对应数组
     */
    //域查询对应数组(BooleanClause.Occur.SHOULD对应参数)
    public static final BooleanClause.Occur[] QUERY_FLAGSFOUR1 = {BooleanClause.Occur.SHOULD};
// 创建索引

 //org.apache.lucene.document.Document (这个包)

1,创建索引

String path = "/LuneceProject/WebContent/WEB-INF/lunece/news.txt";//索引存放目录,可以自己设置内容

Directory directory = new SimpleFSDirectory(new File(path));//创建目录
boolean exist = IndexReader.indexExists(directory);//检测目录是否存在
  IndexWriter writer = new IndexWriter(directory, new StandardAnalyzer(

                Version.LUCENE_30), !exist, IndexWriter.MaxFieldLength.LIMITED);

               if (exist) {
  File file = new File(path);
          if (file.exists()) {
            // 文件删除
            file.delete();
        }   

                          Document doc=Document();//创建文档对象

                  //contenxt是一个对象,Name添加到域

   doc.add(new Field(NAMES,context.getName().toString(), Field.Store.YES,

            Field.Index.NOT_ANALYZED));//是否分域查询,是否拆词

2,通过参数检索

3,通过BooleanQuery进行检索

4,接收检索结果

5,多参数检索通过域

lunece高级检索:可以多条件检索,检索filed对应文档域,对应索引,时间,参数,Id,站点ID,Store,范围,时间升降序。

(可以参考网站:https://www.chedong.com/tech/lucene.html

注意事项:使用lucene检索,要更新索引,不然数据会异常,lucene版本要注意

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小杨互联网

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值