`
jin8000608172
  • 浏览: 140071 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

全文搜索-Lucene

阅读更多
package com.lucene.helloworld;

import org.apache.lucene.analysis.Analyzer;
import org.apache.lucene.analysis.standard.StandardAnalyzer;
import org.apache.lucene.document.Document;
import org.apache.lucene.index.IndexWriter;
import org.apache.lucene.index.IndexWriter.MaxFieldLength;
import org.apache.lucene.queryParser.MultiFieldQueryParser;
import org.apache.lucene.queryParser.QueryParser;
import org.apache.lucene.search.Filter;
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.junit.Test;

import com.lucene.utils.LuceneUtils;

public class HelloWorld {
	private String filePath="F:\\tasks\\workspace2\\LucenePro\\luceneDatasource\\jincm_中国.txt";
	private String indexPath="F:\\tasks\\workspace2\\LucenePro\\luceneIndex";
	private Analyzer analyzer=new StandardAnalyzer();
	@Test
	public void createIndex() throws Exception{
		Document doc=LuceneUtils.file2Document(filePath);
		IndexWriter indexWriter=new IndexWriter(indexPath, analyzer,true,MaxFieldLength.LIMITED);
		indexWriter.addDocument(doc);
		indexWriter.close();
	}

	@Test
	public void search()throws Exception {
		String queryString="jincm";
		String[] fields={"name","content"};
		QueryParser queryParser=new MultiFieldQueryParser(fields, analyzer);
		Query query=queryParser.parse(queryString);
		IndexSearcher indexSearcher=new IndexSearcher(indexPath);
		Filter filter=null;
		TopDocs topDocs=indexSearcher.search(query,filter,10000);
		System.out.println("总共有【" + topDocs.totalHits + "】条匹配结果");
		for(ScoreDoc scoreDoc:topDocs.scoreDocs){
			int docIndex=scoreDoc.doc;
			Document doc=indexSearcher.doc(docIndex);
			System.out.println("<------------------------------");
			System.out.println(doc.get("name"));
			System.out.println(doc.get("content"));
			System.out.println(doc.get("size"));
			System.out.println(doc.get("path"));
			System.out.println("------------------------------>");
		}
		
	}
}



package com.lucene.utils;

import java.io.BufferedReader;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.InputStreamReader;

import org.apache.lucene.document.Document;
import org.apache.lucene.document.Field;
import org.apache.lucene.document.Field.Index;
import org.apache.lucene.document.Field.Store;
import org.apache.lucene.document.NumberTools;

public class LuceneUtils {
	public static Document file2Document(String filePath){
		File file=new File(filePath);
		Document doc=new Document();
		doc.add(new Field("name", file.getName(), Store.YES, Index.ANALYZED));
		doc.add(new Field("content",readFileContent(file), Store.YES, Index.ANALYZED));
		doc.add(new Field("size", NumberTools.longToString(file.length()), Store.YES, Index.NOT_ANALYZED));
		doc.add(new Field("path", file.getAbsolutePath(), Store.YES, Index.NOT_ANALYZED));
		return doc;
	}
	public static String readFileContent(File file){
		try {
			BufferedReader reader=new BufferedReader(new InputStreamReader(new FileInputStream(file)));
			StringBuffer content=new StringBuffer();
			for(String line=null;(line=reader.readLine())!=null;){
				content.append(line);
			}
			return content.toString();
		} catch (Exception e) {
			// TODO Auto-generated catch block
			throw new RuntimeException();
		}
	}
}

分享到:
评论

相关推荐

    spring-lucene简单项目

    Lucene是一个高性能、全文本搜索库,被广泛应用于各种搜索引擎的开发。在这个项目中,我们将深入探讨如何将这两者结合,以实现高效的数据检索功能。 首先,我们需要了解Spring框架。Spring是一个开源的应用框架,...

    Laravel开发-laravel-lucene-search

    在本文中,我们将深入探讨如何在Laravel框架中利用`laravel-lucene-search`这个扩展进行全文搜索引擎的集成。Laravel是一款流行的PHP框架,它以其优雅的语法和强大的功能深受开发者喜爱。`laravel-lucene-search`是...

    开发自己的搜索引擎--Lucene+Heritrix.zip

    Apache Lucene是一个强大的全文搜索引擎库,而Heritrix则是一个功能丰富的网页抓取器,用于收集互联网上的数据。接下来,我们将深入探讨这两个工具以及如何将它们结合使用。 首先,Apache Lucene是Java编写的一个高...

    paoding-webx3-solr-lucene

    Lucene是Java最著名的全文检索库,而Solr在其基础上增加了集群、分布式搜索、多文档格式支持等功能,使得大规模数据的搜索变得简单。在"paoding-webx3-solr-lucene"项目中,Solr作为后端的核心组件,负责存储和管理...

    hanlp-lucene-plugin, HanLP中文分词Lucene插件,支持包括Solr在内的基于Lucene的系统.zip

    通过以上介绍,我们可以看到hanlp-lucene-plugin是如何通过结合HanLP的强大中文处理能力和Lucene的全文检索引擎,为中文搜索提供强大支持的。对于需要处理大量中文数据的应用来说,这无疑是一个高效且灵活的选择。

    apache-lucene-analyzers.jar

    总的来说,"apache-lucene-analyzers.jar"是Apache Lucene库的重要组成部分,它提供了丰富的文本分析工具,使得开发人员可以构建出高效、精准的全文搜索引擎。通过对文本的智能处理,它能帮助用户找到他们真正想要的...

    开发自己的搜索引擎---Lucene+Heritrix(第2版)

    开发自己的搜索引擎---Lucene+Heritrix(第2版)。超星导出来的,非常清晰。CSDN上传限制60MB,点击我的用户名查看part2。

    jakarta-lucene-1.9-final.zip_lucene_lucene 1.9 final j

    Apache Lucene是一个开源的全文检索库,由Java编写,提供了高度可扩展的、高性能的文本搜索引擎功能...通过“jakarta-lucene-1.9-final.zip”,我们可以深入了解并实践Lucene 1.9的用法,从而掌握全文检索的核心技术。

    一步一步跟我学习lucene(12)---lucene搜索之分组处理group查询

    首先,Lucene是一个开源全文搜索引擎库,它为Java开发者提供了构建高效、可扩展的搜索功能。在Lucene中,分组查询(Grouping)是通过`org.apache.lucene.search.grouping`包来实现的,这个包提供了一种方式来对搜索...

    《开发自己的搜索引擎--Lucene+Heritrix》 pdf

    Apache Lucene是一个开源的全文检索库,由Java编写,为开发者提供了构建高效、可扩展的搜索功能的基础。Lucene提供了索引和搜索文本的高级数据结构,如倒排索引,使得能够快速地找到与查询相关的文档。此外,它还...

    neo4j-lucene-index-1.7.1.zip

    Lucene 是一个高性能、全文本搜索库,被广泛用于构建复杂检索功能。在 Neo4j 中,Lucene 作为默认的内建索引机制,用于加速节点和关系的查找。 这个特定的版本 "1.7.1" 暗示这是一个较早的发布,可能适用于 Neo4j ...

    Luke-Lucene Index Toolbox

    Lucene是Java开发的全文搜索引擎库,被广泛应用于各种搜索应用中,包括网站搜索、文档检索、数据挖掘等领域。Luke使得开发者和非开发者都能以直观的方式查看和理解Lucene索引的内部结构。 在Lucene的索引中,信息是...

    Java的全文索引引擎--Lucene.ppt

    Lucene是一个高性能、全文检索库,由Apache软件基金会开发并维护,是Java编程语言中最受欢迎的全文搜索引擎之一。它提供了强大的文本分析、索引构建和搜索功能,使得开发者能够快速地在大量文本数据中实现高效的全文...

    luke--- lucene索引数据查看器

    Lucene是一个开源全文检索库,广泛应用于各种搜索引擎的构建。通过Luke,用户可以直接浏览索引的结构、内容和配置细节,帮助理解和调试索引过程。 ### 1. Luke的主要功能 - **索引浏览**:Luke允许用户查看索引的...

    开发自己的搜索引擎--Lucene+Heritrix

    开发者可以利用Lucene提供的各种API来构建复杂的搜索引擎,如全文搜索、关键词搜索、模糊搜索等。利用Lucene,开发者可以构建一个基本的搜索引擎,但是要搜索互联网上的内容,还需要一个能够抓取网页数据的工具,这...

    nexus-indexer-lucene-plugin-2.6.1-01.zip

    总结来说,"nexus-indexer-lucene-plugin-2.6.1-01.zip" 是一个用于提升Nexus仓库管理器搜索功能的Lucene插件,而"groovy-crypto-extensions.zip" 是一个Groovy语言的加密库,两者都是开源项目,可以被开发者社区...

    querydsl-lucene3-3.2.3.zip

    Querydsl是一个Java查询语言工具,它允许开发者使用类型安全的方式来构建复杂的查询,而Lucene是Apache软件基金会的一个开源全文搜索引擎库。 Querydsl是一个强大的查询构造工具,它提供了静态类型查询的能力,支持...

    neo4j-lucene-index-2.1.0.zip

    标题 "neo4j-lucene-index-2.1.0.zip" 暗示了这是一个与 Neo4j 数据库相关的资源,特别是关于 Lucene 搜索索引的版本为 2.1.0 的组件。Neo4j 是一个著名的图形数据库系统,它使用节点、关系和属性来存储和查询数据。...

Global site tag (gtag.js) - Google Analytics