`

LuceneTest

    博客分类:
  • JAVA
阅读更多

/**
 *
 */
package com.test;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;

import net.paoding.analysis.analyzer.PaodingAnalyzer;
import net.paoding.analysis.examples.gettingstarted.BoldFormatter;

import org.apache.lucene.analysis.Analyzer;
import org.apache.lucene.analysis.TokenStream;
import org.apache.lucene.document.Document;
import org.apache.lucene.document.Field;
import org.apache.lucene.index.IndexReader;
import org.apache.lucene.index.IndexWriter;
import org.apache.lucene.index.TermPositionVector;
import org.apache.lucene.queryParser.QueryParser;
import org.apache.lucene.search.Hits;
import org.apache.lucene.search.IndexSearcher;
import org.apache.lucene.search.Query;
import org.apache.lucene.search.Searcher;
import org.apache.lucene.search.highlight.Highlighter;
import org.apache.lucene.search.highlight.QueryScorer;
import org.apache.lucene.search.highlight.SimpleFragmenter;
import org.apache.lucene.search.highlight.TokenSources;
import org.apache.lucene.store.Directory;
import org.apache.lucene.store.FSDirectory;

/**
 * @author Administrator
 *
 */
public class LuceneTest {

    private static String QUERY_FIELD = "address";
    private static String FIELD3 = "id";
    private static String FIELD1 = "name";
    private static String FIELD2 = "address";
   
    private static String QUERY = "中华  and 共和国";

    /**
     * @param args
     */
    public static void main(String[] args) {
        // TODO Auto-generated method stub

        String driver = "com.mysql.jdbc.Driver";
        String url = "jdbc:mysql://localhost:3306/mytest1?characterEncoding=utf-8";
        String user = "root";
        String password = "root";
        String sql = "select * from test1";
        Connection conn = null;
        Statement stmt = null;
        ResultSet rs = null;
        try {
            Class.forName(driver);
            conn = DriverManager.getConnection(url, user, password);

            stmt = conn.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE, ResultSet.CONCUR_READ_ONLY);
            rs = stmt.executeQuery(sql);

            Analyzer analyzer = new PaodingAnalyzer();
            //Analyzer analyzer = new CJKAnalyzer();
            //Directory ramDir = new RAMDirectory();
            Directory ramDir = FSDirectory.getDirectory("d://luncene");
            IndexWriter writer = new IndexWriter(ramDir, analyzer);
           
           
            while (rs.next()) {
               
                System.out.println(rs.getString("address"));
                Document doc = new Document();
                Field fd1 = new Field(FIELD1, rs.getString("name"), Field.Store.YES, Field.Index.TOKENIZED, Field.TermVector.WITH_POSITIONS_OFFSETS);
                Field fd2 = new Field(FIELD2, rs.getString("address"), Field.Store.YES, Field.Index.TOKENIZED, Field.TermVector.WITH_POSITIONS_OFFSETS);
                Field fd3 = new Field(FIELD3, rs.getString("id"), Field.Store.YES, Field.Index.TOKENIZED, Field.TermVector.WITH_POSITIONS_OFFSETS);
                doc.add(fd1);
                doc.add(fd2);
                doc.add(fd3);
                writer.addDocument(doc);
                System.out.println("-------------------------------");
            }
           
           
            writer.optimize();
            writer.close();

            //
            IndexReader reader = IndexReader.open(ramDir);
            String queryString = QUERY;
            QueryParser parser = new QueryParser(QUERY_FIELD, analyzer);
            Query query = parser.parse(queryString);
            Searcher searcher = new IndexSearcher(ramDir);
            query = query.rewrite(reader);
            System.out.println("Searching for: " + query.toString(QUERY_FIELD));
            Hits hits = searcher.search(query);

            BoldFormatter formatter = new BoldFormatter();
            Highlighter highlighter = new Highlighter(formatter, new QueryScorer(query));
            highlighter.setTextFragmenter(new SimpleFragmenter(50));
            for (int i = 0; i < hits.length(); i++) {
                Document doc=hits.doc(i);
                String text = hits.doc(i).get(QUERY_FIELD);
                int maxNumFragmentsRequired = 5;
                String fragmentSeparator = "...";
                TermPositionVector tpv = (TermPositionVector) reader.getTermFreqVector(hits.id(i), QUERY_FIELD);
                TokenStream tokenStream = TokenSources.getTokenStream(tpv);
                String result = highlighter.getBestFragments(tokenStream, text, maxNumFragmentsRequired, fragmentSeparator);
                System.out.println(doc.getField(FIELD3).stringValue()+"\t"+doc.getField(FIELD1).stringValue()+"\n" + result);
            }
            reader.close();
        } catch (ClassNotFoundException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        } catch (SQLException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        } catch (Exception e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        } finally {
            try {
                rs.close();
                stmt.close();
                conn.close();
            } catch (SQLException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }

        }

    }

}

分享到:
评论

相关推荐

    LuceneTest.rar

    "LuceneTest.rar" 是一个压缩文件,包含了使用Apache Lucene库的示例代码。Lucene是一个高性能、全文本搜索库,它为开发者提供了在Java应用程序中实现高级搜索功能的能力。 **描述解析:** 描述指出,这个压缩包中...

    luceneTest简单索引操作的应用

    《LuceneTest:简明索引操作应用指南》 在信息技术领域,搜索引擎技术扮演着至关重要的角色,而Apache Lucene是Java平台上的一个开源全文检索库。它为开发者提供了强大的文本搜索功能,使得构建自己的搜索引擎变得...

    LuceneTest 检索

    《深入理解LuceneTest检索》 LuceneTest是基于Apache Lucene的一款测试工具,它主要用于帮助开发者在实际项目中快速理解和应用Lucene的检索功能。Lucene作为一个强大的全文搜索引擎库,广泛应用于各种需要高效信息...

    lucene例子(一个完整的,lucene例子)(lucenetest.rar,lucene,全文检索,lucene例子)

    lucenetest.rar,lucene,全文检索,lucene例子 lucenetest.rar,lucene,全文检索,lucene例子lucenetest.rar,lucene,全文检索,lucene例子

    lucene-test

    相当于注册了DefaultAnnotationHandlerMapping和AnnotationMethodHandlerAdapter两个bean, 配置一些messageconverter。即解决了@Controller注解的使用前提配置。

    luceneTest:使用 apache lucene 的一些测试

    在这个名为 "luceneTest" 的项目中,我们可以看到作者正在对 Apache Lucene 进行一些实践性的测试和探索。 首先,让我们深入了解 Apache Lucene 的核心概念: 1. **索引(Indexing)**:在 Lucene 中,数据不是...

    lucene4.9初体验(源码附件)

    压缩包中的"LuceneTest"可能是一个包含示例代码的项目,用于演示如何使用Lucene 4.9进行索引构建和查询操作。通常,这样的项目会包含以下部分: 1. 文档读取:读取待索引的数据源,如文件、数据库或网络资源。 2. ...

    搜索引擎样例

    在这个压缩包文件中,包含了一个名为"LuceneTest"的文件,这很可能是基于Apache Lucene库的一个示例程序。 Apache Lucene是一个开源全文检索库,由Java编写,为开发者提供了构建高效、可扩展的搜索功能所需的各种...

    lucence3.6.1 示例完整包

    《Lucene 3.6.1 入门与实践指南》 Lucene 是一个高性能、全文本搜索引擎库,被广泛应用于各种系统...通过深入学习和实践“LuceneTest”中的示例,开发者可以迅速掌握Lucene的核心功能,并将其灵活应用到自己的项目中。

    第一个lucene的简单实例....

    描述中的"luceneTest"可能是指一个示例项目或者测试代码,可能是博主在iteye博客上分享的一个具体实例,目的是通过实际操作来解释Lucene的工作原理。博文链接虽无法直接访问,但我们可以通过通常的Lucene入门步骤来...

    lucene实例项目及其打包文件

    "LuceneTest"很可能是一个包含源代码的Java工程,其中可能有以下部分: - 主类:启动程序,创建索引或执行查询的核心类。 - 文档类:定义待索引的数据结构,通常包含文本字段和其他元数据。 - 索引器:使用...

    Lucene的使用Demo(含分词)

    2. "LuceneTest.Web" 可能是一个Web应用程序项目,展示了如何在ASP.NET Web环境中使用Lucene进行搜索功能的实现。这可能包括了索引创建、查询执行和结果展示的相关代码。 3. "DictSeg" 文件名暗示可能存在一个字典...

    Lucene demo

    在压缩包中的 “LuceneTest” 文件很可能是包含了一个简单的 Lucene 示例应用,可能包含了创建索引、添加文档、搜索和读取索引的示例代码。通过运行和分析这个示例,可以更好地理解 Lucene 的工作原理和使用方式。 ...

    Lucene Demo(创建、增加、更新、删除索引等)

    在提供的 `LuceneTest` 文件中,可能包含了示例代码,用于演示如何使用 Lucene 进行索引的创建、增加、更新和删除。这些代码通常会包含以下步骤: 1. 初始化 `Directory` 对象,这将指向索引存储的位置。 2. 创建 `...

    一个例子教你学懂搜索引擎(lucene)

    在给定的文件“luceneTest”中,可能包含了示例代码或者配置文件,这通常包括以下几个步骤: 1. 初始化索引目录:创建一个FSDirectory对象,指定用于存储索引的物理路径。 2. 创建索引写入器:使用...

    lucene学习demo

    "LuceneTest"可能是这个学习示例中的主程序或测试类,它可能包含了实现上述搜索功能的代码示例。在这个文件中,你可能会看到如何创建索引、如何构建查询、如何执行搜索、如何处理结果以及如何进行排序的具体实现。 ...

    自己写的一个lucene知识点集合

    这个压缩包“LuceneTest2”很可能是作者自己编写的一系列关于 Lucene 的代码示例,包含了对 Lucene 常用操作的实践和注解。 1. **Lucene 的基本概念** - **索引**:Lucene 首先将文档内容转化为倒排索引结构,便于...

    Lucene建立索引

    - `LuceneTest`可能是这个项目的主要测试类,它可能包含创建索引、查询索引以及展示结果的代码示例。 - 学习该项目,应关注如何实例化`Directory`(如`FSDirectory`)、选择合适的`Analyzer`(如`StandardAnalyzer...

    Lucene简单列子工程

    这个“LuceneTest”项目就是一个基础的Lucene应用实例,它展示了如何在Eclipse环境中搭建、运行和调试Lucene搜索功能。通过这个例子,你可以更好地理解Lucene的工作原理,为后续更复杂的搜索应用打下基础。

Global site tag (gtag.js) - Google Analytics