Lucene给文本索引和搜索功能的应用

Lucene允许你往程序中添加搜索功能,Lucene能够把你从文本中解析出来的数据进行索引和搜索 ,Lucene不关心数据来源 甚至不关心语种,不过你需要把它转换成文本格式。也就是说你可以搜索 html网页,文本文档,word文档 ,pdf,或者其他一些 总之 只要能够提取出文本信息的即可。同样你也可以利用Lucene来索引存储在数据库中的数据,以给你的用户提供一些  比如 全文搜索功能等 ,反正Lucene的功能很是强大。里面还有很多开源的对不同语言进行分析的插件等。

下面我介绍一个例子 ,这里我进行对 一个txt文档的 每一行进行了 索引的添加 ,也就是说  把每一行 当作一个document对象来处理,实际上在Lucene中 每一个document 相当于我们在数据库中的库名, 而每个field相当于我们的表名 ,它能够对文本进行自动处理去掉里面的一些语气词,它能把你规定的域当作关键词来进行索引 以备查询时使用,Lucene比较容易使用 ,但是不如数据库灵活,速度很快。下面 我用一个例子来说明(这里我用的Lucene4.7.2,最高版本 ,你需要注意把需要的一些jar包引入的到你的工程中,使用maven可直接引入依赖需要的全部引入)我这里写了一个实例 你可以进行参考学习使用方法。

--------------------------------------分割线 --------------------------------------

基于Lucene多索引进行索引和搜索 www.linuxidc.com/Linux/2012-05/59757.htm

Lucene 实战(第2版) 中文版 配套源代码

Lucene 实战(第2版) PDF高清中文版

使用Lucene-Spatial实现集成地理位置的全文检索

Lucene + Hadoop 分布式搜索运行框架 Nut 1.0a9

Lucene + Hadoop 分布式搜索运行框架 Nut 1.0a8

Lucene + Hadoop 分布式搜索运行框架 Nut 1.0a7

Project 2-1: 配置Lucene, 建立WEB查询系统[Ubuntu 10.10]

--------------------------------------分割线 --------------------------------------

package lucene.home.clq;

/**
 * @author chenlongquan
 * Copyright Manning Publications Co..com
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *   
 *   
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific lan     
*/

//创建索引
import org.apache.lucene.index.IndexWriter;
import org.apache.lucene.index.IndexWriterConfig;
import org.apache.lucene.analysis.Analyzer;
import org.apache.lucene.analysis.cn.smart.SmartChineseAnalyzer;
import org.apache.lucene.analysis.standard.StandardAnalyzer;
import org.apache.lucene.document.Document;
import org.apache.lucene.document.Field;
import org.apache.lucene.document.TextField;
import org.apache.lucene.store.FSDirectory;
import org.apache.lucene.store.Directory;
import org.apache.lucene.util.Version;
import java.io.BufferedReader;
import java.io.File;
import java.io.FileFilter;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.FileReader;
import java.io.InputStreamReader;
import java.io.LineNumberReader;
import java.util.ArrayList;
import java.util.HashSet;
import java.util.List;
import java.util.Set;
/**
 * This code was originally build for the index
 *
 */
public class Indexer {

public static void main(String[] args) throws Exception {
   
    String indexDir = "f:\\index";        //1
    String dataDir = "f:\\baidu";          //2


    long start = System.currentTimeMillis();
    Indexer indexer = new Indexer(indexDir);
    int numIndexed;
    try {
      numIndexed = indexer.index(dataDir, new TextFilesFilter());
    } finally {
      indexer.close();
    }
    long end = System.currentTimeMillis();

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:http://www.heiqu.com/c2b8cd7d772c9b7f3bc1164f8f47b3cf.html