`
放晴览山青
  • 浏览: 3536 次
  • 性别: Icon_minigender_1
  • 来自: 成都
社区版块
存档分类
最新评论

全文检索小案例

阅读更多
1.什么是全文检索?
全文检索是计算机程序通过扫描文章中的每一个词,对每一个词建立一个索引,指明该词在文章

中出现的次数和位置。当用户查询时根据建立的索引查找,类似于通过字典的检索字表查字的过程。
2.搭建全文检索环境
 lucene-core-3.0.1.jar(核心包)
 contrib\analyzers\common\lucene-analyzers-3.0.1.jar(分词器)
 contrib\highlighter\lucene-highlighter-3.0.1.jar(高亮)
contrib\memory\lucene-memory-3.0.1.jar(高亮)
3,具体案例:
建立实体类:
student.java
package cn.laibin.util;


public class Student {
private Integer id;
private String name;
private String description;
public Integer getId() {
return id;
}
public void setId(Integer id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getDescription() {
return description;
}
public void setDescription(String description) {
this.description = description;
}


}
建立测试类
package cn.laibin.test;

import java.io.File;
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;

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.Field.Index;
import org.apache.lucene.document.Field.Store;
import org.apache.lucene.index.IndexWriter;
import org.apache.lucene.index.IndexWriter.MaxFieldLength;
import org.apache.lucene.queryParser.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.apache.lucene.util.Version;
import org.junit.Test;

import cn.laibin.util.Student;

public class TestLu {
private static Directory directory;
private static Analyzer a;
static{
try {
directory=FSDirectory.open(new File("./Dir"));//目录   
a=new StandardAnalyzer(Version.LUCENE_30);//lucene版本       
} catch (IOException e) {
throw new RuntimeException(e);
}
}
//建立索引
@Test
public void testCreateIndex() throws Exception{
//准备数据
Student student=new Student();
student.setId(1);
student.setName("周雨佳");
student.setDescription("【如何让当前页面3秒以后自动跳转到其他页面?JS页面自动

跳转】");
//放到索引库中

//建立索引
//1.把Article转为Document
Document document=new Document();
String idString=student.getId().toString();
document.add(new Field("name",student.getName() , Store.YES,

Index.ANALYZED));
document.add(new Field("id",idString, Store.YES, Index.ANALYZED));
document.add(new Field("description",student.getDescription() , Store.YES,

Index.ANALYZED));

//2把document放到索引库中


IndexWriter indexWriter=new IndexWriter(directory, a,

MaxFieldLength.LIMITED);
indexWriter.addDocument(document);
indexWriter.close();
}


//搜索
@Test
public void testSearch() throws Exception {
//准备查询条件
String queryString="周雨佳";
//2执行搜索
List<Student> list=new ArrayList<Student>();
//===================================
//第一:把查询字符串转成Query对象(默认只从title中查询)
QueryParser queryParser=new QueryParser(Version.LUCENE_30, "name", a);
Query query= queryParser.parse(queryString);
//第二:执行查询,得到中间结果
IndexSearcher indexSearcher= new IndexSearcher(directory);//指定索引库
TopDocs topDocs=indexSearcher.search(query, 100);//n,返回前n条结果

int count=topDocs.totalHits;
ScoreDoc[] scoreDocs=topDocs.scoreDocs;


//3.处理结果
for(int i=0;i<scoreDocs.length;i++){
ScoreDoc scoreDoc=scoreDocs[i];
float score=scoreDoc.score;//相关度得分
int docId=scoreDoc.doc;//document的内部编号

//根据编号拿到Document数据
Document doc=indexSearcher.doc(docId);
//把Document转为Article
String idString=doc.get("id");
String name=doc.get("name");
String description=doc.get("description");//等价于doc。getField()。

StringValue();
Student student=new Student();
student.setId(Integer.parseInt(idString));
student.setName(name);
student.setDescription(description);
list.add(student);
}
indexSearcher.close();



[color=darkred][/color]

//===================================
//3显示结果
System.out.println("总结果"+count);
for (Student a:list) {
System.out.println("----------------------------------");
System.out.println("id="+a.getId());
System.out.println("name="+a.getName());
System.out.println("description="+a.getDescription());
}
}
}

 

分享到:
评论

相关推荐

    Lucene全文检索案例

    **Lucene 全文检索案例** Lucene 是一个高性能、可扩展的信息检索库,由Apache软件基金会开发。它提供了一个简单但功能强大的API,用于在各种数据源中实现全文搜索。这个案例将深入探讨如何使用Lucene进行全文检索...

    全文检索案例

    在这个“全文检索案例”中,我们将探讨如何实现一个简单的全文检索系统,涉及的关键技术包括索引构建、查询处理和结果排序。 1. **索引构建**:全文检索的核心是建立索引,这类似于图书馆的目录系统。对于每个文档...

    lucene全文检索案例源码

    《深入剖析Lucene全文检索案例源码》 在信息技术领域,全文检索技术是搜索引擎的核心,而Lucene作为Java平台上的一个开源全文检索库,被广泛应用于各种搜索应用中。本篇将围绕“lucene全文检索案例源码”展开,深入...

    Lucene.Net 实现全文检索

    在本案例中,我们将在 .Net MVC4 框架上使用 Lucene.Net 来构建一个全文检索系统。 首先,我们需要理解全文检索的基本概念。全文检索是指在文档集合中,根据用户输入的查询词,查找包含这些词的文档。与传统的...

    基于Lucene3.6进行全文检索的小案例

    在这个小案例中,我们将了解Lucene的基本概念,以及如何构建一个简单的全文检索系统。 首先,让我们了解Lucene的核心组件。Lucene主要包括以下几个部分: 1. **索引(Index)**:Lucene通过将文本数据转换为可搜索...

    Lucene基于java的全文检索案例

    总的来说,"Lucene基于java的全文检索案例" 是一个很好的学习资源,通过它你可以深入了解 Lucene 的工作原理和使用方法,从而在自己的项目中实现高效的全文检索功能。这个案例涵盖了索引生命周期管理、查询构造和...

    全文检索-搜索文件

    在提供的文件列表中,“全文检索照片.png”可能展示的是全文检索系统的界面或者工作流程图,而缺失的“全文检索”可能是另一个文件,可能包含了更具体的实现细节或案例分析。不过,由于没有实际文件内容,我们只能...

    lucene3.5全文检索案例lucene+demo

    本篇文章将围绕“lucene3.5全文检索案例lucene+demo”,详细讲解Lucene 3.5的核心概念、关键功能以及如何通过实例进行操作。 一、Lucene 3.5核心概念 1. 文档(Document):Lucene中的最小处理单元,相当于数据库...

    Lucene全文检索引擎

    **Lucene全文检索引擎** Lucene是Apache软件基金会的一个开源项目,它是一个高性能、全文本搜索引擎库,可以被集成到各种应用中实现全文检索功能。Lucene提供了完整的搜索功能实现,包括索引创建、文档存储、查询...

    项目源码----全文检索案例

    在这个"项目源码----全文检索案例"中,我们可以深入理解全文检索在实际应用中的实现。 在信息技术领域,全文检索通常涉及到以下几个核心概念: 1. **倒排索引**:倒排索引是全文检索的基础,它将每个词与包含该词...

    C# Winfrom 模拟字符串全文检索

    在本案例中,我们将聚焦于如何在C#环境下,利用Winform窗口应用程序实现字符串的全文检索功能。这一过程涉及到文件的读取、字符串处理以及用户界面的设计。 首先,我们需要理解全文检索的基本原理。全文检索是指在...

    Java的全文检索实现

    ### Java的全文检索实现 随着互联网的飞速发展,搜索引擎已成为获取信息不可或缺的工具之一。在这一背景下,本文深入探讨了基于Java实现全文检索的方法及其性能优化策略。 #### 一、全文检索系统的机制 全文检索...

    专利数据库检索案例及分析PPT学习教案.pptx

    "专利数据库检索案例及分析PPT学习教案.pptx" 本PPT学习教案旨在介绍专利数据库检索的案例及分析,旨在帮助学生和实践者更好地理解专利数据库检索的过程和方法。 一、专利新颖性检索 专利新颖性检索是指在专利...

    全文检索工具包使用案例

    配合提供的TSH全文检索工具包的使用。其中是一个详细的检索功能,以及对应结果的展示,以及关键词的抽取,纠错词提示,联想词提示。检索接过的处理。以及正文的关键词抽取,和文章聚类等功能。 完整解读了TSH的使用...

    写进存储过程的全文检索

    本篇文章介绍了一个具体的实现案例:如何将一个全文检索的功能封装到SQL Server的存储过程中,并支持不同类型的搜索模式。 #### 存储过程概述 存储过程是一种预编译的SQL代码块,它被保存在数据库服务器上,并可以...

    lucene全文检索全面教程

    **Lucene全文检索全面教程** Lucene是一款由Apache软件基金会开发的开源全文检索库,它为开发者提供了在Java应用程序中实现高性能、可扩展的全文检索功能。本教程将深入探讨Lucene的核心概念、架构和使用方法,帮助...

    基于Lucene的全文检索引擎研究与应用.pdf

    本文将基于一篇关于“基于Lucene的全文检索引擎研究与应用”的论文,深入探讨全文检索的基本原理、Lucene系统的结构特点以及其实现的应用案例。 #### 全文检索概述 全文检索是一种信息检索方式,它能够根据文档中...

    全文检索使用国产达梦数据库实现全文检索的详细说明和实践探索

    为了更好地理解全文检索在达梦数据库中的应用,我们可以构建一个简单的测试案例: - 创建一个包含地址信息的表`ADDRESS`,并定义一个全文索引。 - 插入一些测试数据,并更新全文索引。 - 使用不同的查询条件进行...

    信息检索案例

    ### 信息检索案例分析 #### 一、食品卫生监督管理中的问题 在进行信息检索时,首先需要明确目标:本案例的目标是寻找关于“食品卫生监督管理中的问题”的相关文献。为了达到这一目的,我们选择了CNKI中国知网作为...

    SQL Server 2005全文检索技术在网站上的应用实录.rar

    SQL Server 2005全文检索技术是数据库管理系统中..."SQLServer2005_QWJS"这个文件很可能是关于SQL Server 2005全文检索技术的具体教程或实践案例,深入学习和实践这些内容,对于提升数据库管理和网站搜索能力大有裨益。

Global site tag (gtag.js) - Google Analytics