文档详情

Lucene-索引数据库(补足六个汉字).doc

发布:2018-12-26约9.4千字共9页下载文档
文本预览下载声明
PAGE PAGE 8 Lucene 索引数据库(转载) 关键词: HYPERLINK /tag/Lucene \t _blank Lucene ?? HYPERLINK /tag/%CB%F7%D2%FD%CA%FD%BE%DD%BF%E2 \t _blank 索引数据库 ?? ?????????????????????????????????????? ? Lucene,作为一种全文搜索的辅助工具,为我们进行条件搜索,无论是像Google,Baidu之类的搜索引擎,还是论坛中的搜索功能,还 是其它C/S架构的搜索,都带来了极大的便利和比较高的效率。本文主要是利用Lucene对MS Sql Server 2000进行建立索引,然后进行全文索引。至于数据库的内容,可以是网页的内容,还是其它的。本文中数据库的内容是图书馆管理系统中的某个作者表 -Authors表。   因为考虑到篇幅的问题,所以该文不会讲的很详细,也不可能讲的很深。   本文以这样的结构进行:   1.介绍数据库中Authors表的结构   2.为数据库建立索引   3.为数据库建立查询功能   4.在web界面下进行查询并显示结果   1.介绍数据库中Authors表的结构 字段名称???????? 字段类型???????? 字段含义 Au_id??????????????? Varchar(11)??? 作者号 Au_name??????? Varchar(60)???? 作者名 Phone???????????? Char(12)?????????? 电话号码 Address????????? Varchar(40)????? 地址 City?????????????????? Varchar(20)???? 城市 State??????????????? Char(2)???????????? 省份 Zip??????????????????? Char(5)???????????? 邮编 contract??????????? Bit(1)??????????????? 外键(关系不大) 表中的部分内容: ?  2.为数据库建立索引   首先建立一个类TestLucene.java。这个类就是对数据库进行建立索引,编写查询条件等。   当然,最开始就是建立数据库连接。连接代码这里就省略了。^_^   接着,新建一个方法getResutl(String),它返回的是数据库表Authors的内容。具体代码如下: ??? public ResultSet getResult(String sql){ ????? try{ ??????? Statement stmt = conn.createStatement(); ??????? ResultSet rs = stmt.executeQuery(sql); ??????? return rs; ????? } ????? catch(SQLException e){ ??????? System.out.println(e); ????? } ????? return null; ??? }   然后,为数据库建立索引。   首先要定义一个IndexWriter(),它是将索引写进Lucene自己的数据库中,它存放的位置是有你自己定义的。在定义 IndexWriter是需要指定它的分析器。Lucene自己自带有几个分析器,例 如:StandarAnalyzer(),SimpleAnalyzer(),StopAnalyzer()等。它作用是对文本进行分析,判断如何进行切 词。 接着,要定义一个Document。Document相当于二维表中一行数据一样。Document里包含的是Field字段,Field相当于数据库中一列,也就是一个属性,一个字段。 最后应该对IndexWriter进行优化,方法很简单,就是writer.optimize(). 具体代码如下: ? public void Index(ResultSet rs){ ????? try{ ??????? IndexWriter writer = new IndexWriter(d:/index/, getAnalyzer(), true); ??????? while(rs.next()){ ??????????? Document doc=new Document(); ??????????? doc.add(Field.Keyword(id,rs.getString(au_id))); ??????????? doc.add(Field.Text(name,rs.getString(au_name))); ??????????
显示全部
相似文档