其实,lucene是一个很容易上手的搜索引擎框架,传统的搜索引擎,涉及到爬虫,也就是爬取网页,然后对网页进行加工,也就是索引,最后用于搜索,lucene这个框架可以很方便的帮你做到后面两个步骤,也就是索引和搜索!本文尝试通过一个例子,使大家掌握lucene的使用核心方法,包括分词、索引、搜索不同的目录、搜索不同的域,希望大家通过这个实例,对lucene和搜索引擎能有比较全面的认识!
下面是这个例子的代码:
phz.LuceneTest.java
- package phz;
-
- import org.apache.lucene.analysis.standard.StandardAnalyzer;
- import org.apache.lucene.document.Document;
- import org.apache.lucene.document.Field;
- import org.apache.lucene.index.IndexWriter;
- import org.apache.lucene.queryParser.MultiFieldQueryParser;
- import org.apache.lucene.search.BooleanClause;
- import org.apache.lucene.search.Hits;
- import org.apache.lucene.search.IndexSearcher;
- import org.apache.lucene.search.MultiSearcher;
- import org.apache.lucene.search.Query;
-
-
-
-
-
-
-
- public class LuceneTest {
-
- public static void main(String[] args) {
- try {
- LuceneTest luceneTest = new LuceneTest();
-
- luceneTest.index();
-
- luceneTest.search("中国 金牌");
- } catch (Exception e) {
- e.printStackTrace();
- }
- System.out.println("ok");
- }
-
- public void index() throws Exception {
-
- IndexWriter writer1 = new IndexWriter("d:\\save\\",
- new StandardAnalyzer(), true);
- writer1.close();
-
-
-
-
-
- IndexWriter writer2 = new IndexWriter("d:\\save\\",
- new StandardAnalyzer(), false);
-
- Document doc1 = new Document();
-
-
-
-
- Field field1 = new Field("ArticleTitle", "北京2008年奥运会", Field.Store.YES,
- Field.Index.TOKENIZED);
-
- doc1.add(field1);
-
- Field field2 = new Field("ArticleText", "这是一届创造奇迹、超越梦想的奥运会.......",
- Field.Store.YES, Field.Index.TOKENIZED);
- doc1.add(field2);
-
-
- writer2.addDocument(doc1);
-
-
- Document doc2 = new Document();
- field1 = new Field("ArticleTitle", "中国获得全球赞誉", Field.Store.YES,
- Field.Index.TOKENIZED);
- doc2.add(field1);
- field2 = new Field("ArticleText", "中国所取得的金牌总数排行榜的榜首........",
- Field.Store.YES, Field.Index.TOKENIZED);
- doc2.add(field2);
-
- writer2.addDocument(doc2);
-
-
-
-
- writer2.close();
- }
-
- public void search(String serchString) throws Exception {
-
- IndexSearcher indexSearcher = new IndexSearcher("d:\\save\\");
-
- IndexSearcher indexSearchers[] = { indexSearcher };
-
- String[] fields = { "ArticleTitle", "ArticleText" };
-
- BooleanClause.Occur[] clauses = { BooleanClause.Occur.SHOULD,
- BooleanClause.Occur.SHOULD };
-
-
-
-
- Query query = MultiFieldQueryParser.parse(serchString, fields, clauses,
- new StandardAnalyzer());
-
- MultiSearcher searcher = new MultiSearcher(indexSearchers);
-
- Hits h = searcher.search(query);
-
- for (int i = 0; i < h.length(); i++) {
-
- System.out.println(h.doc(i).get("ArticleTitle"));
-
- System.out.println(h.doc(i).get("ArticleText"));
- }
-
- searcher.close();
- }
- }
附件中有例子的源码及Jar包,可直接运行,并有详细的说明,欢迎大家一起交流.
分享到:
相关推荐
Lucene 并不是一个完整的搜索引擎,而是一个工具集,开发者需要自己构建索引和实现搜索逻辑。 **搜索引擎的基本原理** 搜索引擎的核心是索引和查询。索引过程将原始文本数据转换成可快速检索的结构,通常称为倒排...
首先,"Web搜索引擎开发实例"这部分内容将教你如何使用Lucene来构建一个基本的Web搜索引擎。这通常涉及到爬取网页数据,提取文本,然后使用Lucene进行索引。在这个过程中,你会了解到如何创建Analyzer来处理中文分词...
总之,"lucene检索小例子"是一个实用的教程,通过它你可以学习到如何利用Lucene这一强大的全文搜索引擎库,实现高效、精准的文本检索功能。无论是在网站、数据库还是其他任何需要搜索功能的应用中,Lucene都是一个...
本教程将通过一个简单的Java实现的Search搜索引擎例子,带你入门这个技术。我们将探讨以下几个关键知识点: 1. **搜索引擎的基本概念**:搜索引擎是一个系统,用于索引、检索和排序网络上的信息。它通常包括爬虫...
在这个入门教程中,我们将使用Lucene 4.7版本,结合IK Analyzer,一个专门针对中文分词的开源分析器,来学习如何构建一个简单的搜索引擎。 首先,你需要下载Lucene 4.7和IK Analyzer 2012-FF Hotfix 1。Lucene的...
Lucene 是一个开源的全文搜索引擎库,由Apache软件基金会开发并维护。它提供了高效、可扩展的搜索功能,被广泛应用于各种信息检索系统。本篇文章将深入探讨Lucene 3.4版本的基础应用,包括如何建立索引、更新索引...
总的来说,Lucene 是一个强大且灵活的搜索库,通过理解其基本原理和实践,开发者可以构建出高效的全文搜索引擎。学习 Lucene 相关的教程和资料,可以帮助你掌握这一关键技术,并应用于实际项目中。
总的来说,Lucene 提供了一个强大的工具集,用于实现自定义的全文搜索引擎。不论是在小型项目还是大型企业级应用中,都能看到 Lucene 的身影,因为它可以轻松集成到各种系统中,提供了丰富的功能和优秀的性能。在...
Lucene是一个强大的全文搜索引擎库,由Apache软件基金会开发,被广泛用于构建各种搜索应用。这个压缩包提供的"lucene第一天"是一系列入门教程,旨在帮助初学者快速理解并掌握Lucene的核心概念和基本操作。 首先,让...
《LuceneInAction 代码例子》是针对Apache Lucene这一著名全文搜索引擎库的一份实践教程。Lucene是一个高性能、全文本搜索库,它为开发者提供了强大的文本搜索功能,可以用于构建复杂的检索应用。这个压缩包文件包含...
Nutch是大数据应用的一个典型例子,因为它处理的是海量的网页数据。Hadoop的分布式计算能力使得Nutch能够高效地处理和存储大量的网页信息。Nutch与Hadoop的集成,为大数据环境下的网络信息抓取和搜索提供了强大工具...
《Java例题源码第二章-solr-in-action》是一个包含本书示例代码、数据和配置的资源包,主要用于帮助读者深入理解Java编程中的Solr搜索引擎应用。Solr是Apache Lucene项目的一个子项目,是一个高性能、全文本搜索...