lucene 订阅
Lucene是apache软件基金会4 jakarta项目组的一个子项目,是一个开放源代码的全文检索引擎工具包,但它不是一个完整的全文检索引擎,而是一个全文检索引擎的架构,提供了完整的查询引擎和索引引擎,部分文本分析引擎(英文与德文两种西方语言)。Lucene的目的是为软件开发人员提供一个简单易用的工具包,以方便的在目标系统中实现全文检索的功能,或者是以此为基础建立起完整的全文检索引擎。Lucene是一套用于全文检索和搜寻的开源程式库,由Apache软件基金会支持和提供。Lucene提供了一个简单却强大的应用程式接口,能够做全文索引和搜寻。在Java开发环境里Lucene是一个成熟的免费开源工具。就其本身而言,Lucene是当前以及最近几年最受欢迎的免费Java信息检索程序库。人们经常提到信息检索程序库,虽然与搜索引擎有关,但不应该将信息检索程序库与搜索引擎相混淆。 [1] 展开全文
Lucene是apache软件基金会4 jakarta项目组的一个子项目,是一个开放源代码的全文检索引擎工具包,但它不是一个完整的全文检索引擎,而是一个全文检索引擎的架构,提供了完整的查询引擎和索引引擎,部分文本分析引擎(英文与德文两种西方语言)。Lucene的目的是为软件开发人员提供一个简单易用的工具包,以方便的在目标系统中实现全文检索的功能,或者是以此为基础建立起完整的全文检索引擎。Lucene是一套用于全文检索和搜寻的开源程式库,由Apache软件基金会支持和提供。Lucene提供了一个简单却强大的应用程式接口,能够做全文索引和搜寻。在Java开发环境里Lucene是一个成熟的免费开源工具。就其本身而言,Lucene是当前以及最近几年最受欢迎的免费Java信息检索程序库。人们经常提到信息检索程序库,虽然与搜索引擎有关,但不应该将信息检索程序库与搜索引擎相混淆。 [1]
信息
外文名
Lucene
类    属
搜索引擎
开发时间
2000年
中文名
全文搜索引擎
开发人
Doug Cutting
Lucene历史
Lucene最初是由Doug Cutting开发的,在SourceForge的网站上提供下 Lucene 图片(2张) 载。在2001年9月作为高质量的开源Java产品加入到Apache软件基金会的 Jakarta家族中。随着每个版本的发布,这个项目得到明显的增强,也吸引了更多的用户和开发人员。2004年7月,Lucene1.4版正式发布,10月的1.4.2版本做了一次bug修正。表1.1显示了Lucene的发布历史。版本 发布日期 里程碑0.01 2000年3月 第一个开源版本(SourceForge)1.0 2000年10月1.01b 2001年7月 最后的SourceForge版本1.2 2002年6月 第一个Apache Jakarta版本1.3 2003年12月 复合索引格式,查询分析器增加,远程搜索,token定位,可扩展的API1.4 2004年7月 Sorting, span queries, term vectors1.4.1 2004年8月 排序性能的bug修正1.4.2 2004年10月 IndexSearcher optimization and misc. fixes1.4.3 2004年冬 Misc. fixes2.4.1 2009年3月8日发布新版本2.3.0 2008年1月 更新为2.3.02.4.0 2008年10月 更新为2.4.02.4.1 2009年 5月 更新为 2.4.12.9.0 2009年9月25号 更新为2.9.02.9.1 2009年11月6号 更新为2.9.13.0.0 2009年11月25号 更新为3.0.03.0.1 2010年2月26号 更新为3.0.13.0.2 2010年6月18号 更新为3.0.23.0.3 2010年12月3号 更新为3.0.33.3.0 2011年7月初 更新为3.3.03.4.0 2011年9月14日 更新为3.4.03.5.0 2011年11月26日 更新为3.5.03.6.0 2012年4月12日更新为3.6.03.6.1 2012年7月23日更新为3.6.14.0 2012年10月12日更新为4.0 [2]  4.2 2013年3月11日更新为4.24.3.1 2013-06-18发布4.4 2013年7月23日更新到4.44.5 2013年10月5日更新到4.55.0.0 2015年2月20日更新到5.0.0
收起全文
精华内容
下载资源
问答
  • Lucene

    千次阅读 2019-10-28 15:47:48
    什么是Lucene Lucene是一套用于全文检索和搜寻的开源程序库,由Apache软件基金会支持和提供 Lucene提供了一个简单却强大的应用程序接口(API),能够做全文索引和搜寻,在Java开发环境里Lucene是一个成熟的免费开放...

    什么是Lucene

    • Lucene是一套用于全文检索和搜寻的开源程序库,由Apache软件基金会支持和提供
    • Lucene提供了一个简单却强大的应用程序接口(API),能够做全文索引和搜寻,在Java开发环境里Lucene是一个成熟的免费开放源代码工具
    • Lucene并不是现成的搜索引擎产品,但可以用来制作搜索引擎产品
    • 官网:http://lucene.apache.org/

    用idea写代码

    1. 创建maven项目(new—project----maven)
    2. 添加依赖(pom.xml)
      在这里插入图片描述
     <properties>
            <lunece.version>4.10.2</lunece.version>
        </properties>
    
        <dependencies>
        <dependency>
            <groupId>junit</groupId>
            <artifactId>junit</artifactId>
            <version>4.12</version>
        </dependency>
            <!-- lucene核心库 -->
            <dependency>
                <groupId>org.apache.lucene</groupId>
                <artifactId>lucene-core</artifactId>
                <version>${lunece.version}</version>
        </dependency>
            <!-- Lucene的查询解析器 -->
            <dependency>
                <groupId>org.apache.lucene</groupId>
                <artifactId>lucene-queryparser</artifactId>
                <version>${lunece.version}</version>
            </dependency>
            <!-- lucene的默认分词器库 -->
            <dependency>
                <groupId>org.apache.lucene</groupId>
                <artifactId>lucene-analyzers-common</artifactId>
                <version>${lunece.version}</version>
            </dependency>
            <!-- lucene的高亮显示 -->
            <dependency>
                <groupId>org.apache.lucene</groupId>
                <artifactId>lucene-highlighter</artifactId>
                <version>${lunece.version}</version>
            </dependency>
    
    
    </dependencies>
    

    3.在idea下的这个文件里新建class
    在这里插入图片描述

    import org.apache.lucene.analysis.Analyzer;
    import org.apache.lucene.analysis.standard.StandardAnalyzer;
    import org.apache.lucene.document.Document;
    import org.apache.lucene.document.Field;
    import org.apache.lucene.document.StringField;
    import org.apache.lucene.document.TextField;
    import org.apache.lucene.index.IndexWriter;
    import org.apache.lucene.index.IndexWriterConfig;
    import org.apache.lucene.store.Directory;
    import org.apache.lucene.store.FSDirectory;
    import org.apache.lucene.util.Version;
    import org.junit.Test;
    
    import java.io.File;
    
    public class lucencetest {
    //创建索引
        @Test
        public void testCreate() throws Exception{
          //1、创建文档对象
            Document document =new Document();
            // 创建并添加字段信息。参数:字段的名称、字段的值、是否存储,这里选Store.YES代表存储到文档列表。Store.NO代表不存储
    
            document.add(new StringField("id", "1", Field.Store.YES));
            // 这里我们title字段需要用TextField,即创建索引又会被分词。StringField会创建索引,但是不会被分词
            document.add(new TextField("title","谷歌地图之父跳槽facebook", Field.Store.YES));
            //2 索引目录类,指定索引在硬盘中的位置
            Directory directory = FSDirectory.open(new File("d:\\indexDir"));
            //3 创建分词器对象
            Analyzer analyzer = new StandardAnalyzer();
            //4 索引写出工具的配置对象
            IndexWriterConfig conf = new IndexWriterConfig(Version.LATEST, analyzer);
            //5 创建索引的写出工具类。参数:索引的目录和配置信息
            IndexWriter indexWriter = new IndexWriter(directory, conf);
    
            //6 把文档交给IndexWriter
            indexWriter.addDocument(document);
            //7 提交
            indexWriter.commit();
            //8 关闭
            indexWriter.close();
    
        }
    }
    
    

    点击运行
    在这里插入图片描述

    查看d盘下,是否有你所创建的文件夹
    在这里插入图片描述
    也可以创建多条文档的文件
    现在pom.xml添加
    <!-- https://mvnrepository.com/artifact/com.janeluo/ikanalyzer --> <dependency> <groupId>com.janeluo</groupId> <artifactId>ikanalyzer</artifactId> <version>2012_u6</version> </dependency>依赖

    import org.apache.lucene.document.Document;
    import org.apache.lucene.document.Field;
    import org.apache.lucene.document.StringField;
    import org.apache.lucene.document.TextField;
    import org.apache.lucene.index.IndexWriter;
    import org.apache.lucene.index.IndexWriterConfig;
    import org.apache.lucene.store.FSDirectory;
    import org.apache.lucene.util.Version;
    import org.junit.Test;
    import org.wltea.analyzer.lucene.IKAnalyzer;
    
    import java.io.File;
    import java.util.ArrayList;
    
    public class lucencebb {
        @Test
        public void testCreate2() {
            try {
                ArrayList<Document> documents = new ArrayList<Document>();
    
                Document document = new Document();
                document.add(new StringField("id","1", Field.Store.YES));
                document.add(new TextField("title","谷歌地图之父跳槽facebook",Field.Store.YES));
                documents.add(document);
    
                Document document2 = new Document();
                document2.add(new StringField("id","2",Field.Store.YES));
                document2.add(new TextField("title","谷歌地图之父加盟FaceBook",Field.Store.YES));
                documents.add(document2);
    
                Document document3 = new Document();
                document3.add(new StringField("id","3",Field.Store.YES));
                document3.add(new TextField("title","谷歌地图创始人拉斯离开谷歌加盟Facebook",Field.Store.YES));
                documents.add(document3);
    
                Document document4 = new Document();
                document4.add(new StringField("id","4",Field.Store.YES));
                document4.add(new TextField("title","谷歌地图之父跳槽Facebook与Wave项目取消有关",Field.Store.YES));
                documents.add(document4);
    
                Document document5 = new Document();
                document5.add(new StringField("id","5",Field.Store.YES));
                document5.add(new TextField("title","谷歌地图之父拉斯加盟社交网站Facebook",Field.Store.YES));
                documents.add(document5);
    
                FSDirectory dir = FSDirectory.open(new File("d:/lucenedata"));
    
                IndexWriterConfig conf = new IndexWriterConfig(Version.LATEST, new IKAnalyzer());
                conf.setOpenMode(IndexWriterConfig.OpenMode.CREATE);
                IndexWriter indexWriter = new IndexWriter(dir, conf);
    
                indexWriter.addDocuments(documents);
                indexWriter.commit();
                indexWriter.close();
    
            } catch (Exception e) {
                e.printStackTrace();
            }
        }
    
    }
    
    

    同样运行,查看
    在这里插入图片描述
    4.运行查询代码

    import org.apache.lucene.document.Document;
    import org.apache.lucene.index.DirectoryReader;
    import org.apache.lucene.index.IndexReader;
    import org.apache.lucene.queryparser.classic.QueryParser;
    import org.apache.lucene.search.IndexSearcher;
    import org.apache.lucene.search.Query;
    import org.apache.lucene.search.ScoreDoc;
    import org.apache.lucene.search.TopDocs;
    import org.apache.lucene.store.Directory;
    import org.apache.lucene.store.FSDirectory;
    import org.junit.Test;
    import org.wltea.analyzer.lucene.IKAnalyzer;
    
    import java.io.File;
    
    public class tabletest {
        @Test
        public void testSearch() throws Exception {
            // 索引目录对象
            Directory directory = FSDirectory.open(new File("d:\\lucenedata"));
            // 索引读取工具
            IndexReader reader = DirectoryReader.open(directory);
            // 索引搜索工具
            IndexSearcher searcher = new IndexSearcher(reader);
    
            // 创建查询解析器,两个参数:默认要查询的字段的名称,分词器
            QueryParser parser = new QueryParser("title", new IKAnalyzer());
            // 创建查询对象
            Query query = parser.parse("谷歌");
    
            // 搜索数据,两个参数:查询条件对象要查询的最大结果条数
            // 返回的结果是 按照匹配度排名得分前N名的文档信息(包含查询到的总条数信息、所有符合条件的文档的编号信息)。
            TopDocs topDocs = searcher.search(query, 10);
            // 获取总条数
            System.out.println("本次搜索共找到" + topDocs.totalHits + "条数据");
            // 获取得分文档对象(ScoreDoc)数组.SocreDoc中包含:文档的编号、文档的得分
            ScoreDoc[] scoreDocs = topDocs.scoreDocs;
            for (ScoreDoc scoreDoc : scoreDocs) {
                // 取出文档编号
                int docID = scoreDoc.doc;
                // 根据编号去找文档
                Document doc = reader.document(docID);
                System.out.println("id: " + doc.get("id"));
                System.out.println("title: " + doc.get("title"));
                // 取出文档得分
                System.out.println("得分: " + scoreDoc.score);
            }
        }
    
    }
    
    

    查询结果:

    "C:\Program Files\Java\jdk1.8.0_144\bin\java.exe" -ea -Didea.test.cyclic.buffer.size=1048576 "-javaagent:F:\idea2019\IntelliJ IDEA 2019.1.3\lib\idea_rt.jar=52601:F:\idea2019\IntelliJ IDEA 2019.1.3\bin" -Dfile.encoding=UTF-8 -classpath "F:\idea2019\IntelliJ IDEA 2019.1.3\lib\idea_rt.jar;F:\idea2019\IntelliJ IDEA 2019.1.3\plugins\junit\lib\junit-rt.jar;F:\idea2019\IntelliJ IDEA 2019.1.3\plugins\junit\lib\junit5-rt.jar;C:\Program Files\Java\jdk1.8.0_144\jre\lib\charsets.jar;C:\Program Files\Java\jdk1.8.0_144\jre\lib\deploy.jar;C:\Program Files\Java\jdk1.8.0_144\jre\lib\ext\access-bridge-64.jar;C:\Program Files\Java\jdk1.8.0_144\jre\lib\ext\cldrdata.jar;C:\Program Files\Java\jdk1.8.0_144\jre\lib\ext\dnsns.jar;C:\Program Files\Java\jdk1.8.0_144\jre\lib\ext\jaccess.jar;C:\Program Files\Java\jdk1.8.0_144\jre\lib\ext\jfxrt.jar;C:\Program Files\Java\jdk1.8.0_144\jre\lib\ext\localedata.jar;C:\Program Files\Java\jdk1.8.0_144\jre\lib\ext\nashorn.jar;C:\Program Files\Java\jdk1.8.0_144\jre\lib\ext\sunec.jar;C:\Program Files\Java\jdk1.8.0_144\jre\lib\ext\sunjce_provider.jar;C:\Program Files\Java\jdk1.8.0_144\jre\lib\ext\sunmscapi.jar;C:\Program Files\Java\jdk1.8.0_144\jre\lib\ext\sunpkcs11.jar;C:\Program Files\Java\jdk1.8.0_144\jre\lib\ext\zipfs.jar;C:\Program Files\Java\jdk1.8.0_144\jre\lib\javaws.jar;C:\Program Files\Java\jdk1.8.0_144\jre\lib\jce.jar;C:\Program Files\Java\jdk1.8.0_144\jre\lib\jfr.jar;C:\Program Files\Java\jdk1.8.0_144\jre\lib\jfxswt.jar;C:\Program Files\Java\jdk1.8.0_144\jre\lib\jsse.jar;C:\Program Files\Java\jdk1.8.0_144\jre\lib\management-agent.jar;C:\Program Files\Java\jdk1.8.0_144\jre\lib\plugin.jar;C:\Program Files\Java\jdk1.8.0_144\jre\lib\resources.jar;C:\Program Files\Java\jdk1.8.0_144\jre\lib\rt.jar;F:\idea2019\Luceneaa\target\test-classes;C:\Users\ABU\.m2\repository\junit\junit\4.12\junit-4.12.jar;C:\Users\ABU\.m2\repository\org\hamcrest\hamcrest-core\1.3\hamcrest-core-1.3.jar;C:\Users\ABU\.m2\repository\org\apache\lucene\lucene-core\4.10.2\lucene-core-4.10.2.jar;C:\Users\ABU\.m2\repository\org\apache\lucene\lucene-queryparser\4.10.2\lucene-queryparser-4.10.2.jar;C:\Users\ABU\.m2\repository\org\apache\lucene\lucene-queries\4.10.2\lucene-queries-4.10.2.jar;C:\Users\ABU\.m2\repository\org\apache\lucene\lucene-sandbox\4.10.2\lucene-sandbox-4.10.2.jar;C:\Users\ABU\.m2\repository\org\apache\lucene\lucene-analyzers-common\4.10.2\lucene-analyzers-common-4.10.2.jar;C:\Users\ABU\.m2\repository\org\apache\lucene\lucene-highlighter\4.10.2\lucene-highlighter-4.10.2.jar;C:\Users\ABU\.m2\repository\org\apache\lucene\lucene-memory\4.10.2\lucene-memory-4.10.2.jar;C:\Users\ABU\.m2\repository\com\janeluo\ikanalyzer\2012_u6\ikanalyzer-2012_u6.jar" com.intellij.rt.execution.junit.JUnitStarter -ideVersion5 -junit4 tabletest,testSearch
    本次搜索共找到5条数据
    id: 1
    title: 谷歌地图之父跳槽facebook
    得分: 0.35773432
    id: 2
    title: 谷歌地图之父加盟FaceBook
    得分: 0.35773432
    id: 3
    title: 谷歌地图创始人拉斯离开谷歌加盟Facebook
    得分: 0.289093
    id: 5
    title: 谷歌地图之父拉斯加盟社交网站Facebook
    得分: 0.25552452
    id: 4
    title: 谷歌地图之父跳槽Facebook与Wave项目取消有关
    得分: 0.20441961
    
    Process finished with exit code 0
    
    
    展开全文
  • lucene

    2008-02-17 19:48:51
    开源搜索引擎lucene 源码
  • /// lucene.net:全文检索的工具包,不是应用,只是个类库,完成了全文检索的功能 /// 就是把数据拆分—存起来—查询时—拆分—匹配—结果 /// /// Analysis–分词器,负责把字符串拆分成原子,包含了标准分词,直接...
  • lucene lucene词典的构造原理 lucene模糊查询以及正则查询的原理 lucene删除索引的实现 lucene段merge的过程 lucene怎么实现Field lucene的分词过程
  • lucene课件

    2018-01-03 14:58:17
    lucene课件lucene课件lucene课件lucene课件lucene课件lucene课件
  • lucene实例

    2017-10-23 08:25:48
    lucene实例lucene实例lucene实例lucene实例lucene实例
  • LuceneDemo

    2017-12-20 10:16:10
    Lucene全文检索Lucene全文检索Lucene全文检索Lucene全文检索
  • lucene6.6jar包

    2017-06-19 13:44:57
    lucene
  • lucene详细使用教程

    2017-05-12 09:39:41
    lucene
  • lucene学习lucene学习

    2011-01-13 20:29:11
    lucene学习lucene学习lucene学习lucene学习lucene学习lucene学习lucene学习lucene学习lucene学习lucene学习lucene学习lucene学习lucene学习lucene学习lucene学习lucene学习lucene学习lucene学习lucene学习lucene学习...
  • lucene实例lucene实例

    2010-12-10 15:49:12
    lucene实例lucene实例lucene实例lucene实例lucene实例lucene实例lucene实例lucene实例lucene实例
  • lucene3.0 lucene3.0

    2010-12-14 10:59:57
    lucene3.0 lucene3.0 lucene3.0 lucene3.0 lucene3.0
  • lucene4.10

    2017-06-02 17:06:11
    lucene4.10
  • lucene3.0.2

    2017-10-14 18:19:40
    lucene3.0.2包含lucene-analyzers-3.0.2.jar,lucene-core-3.0.2.jar,lucene-highlighter-3.0.2.jar,lucene-memory-3.0.2.jar等jar包使用lucene实现分词搜索
  • Annotated Lucene 中文版 Lucene源码剖析

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 95,300
精华内容 38,120
关键字:

lucene