Lucene检索数据库支持中文检索Word下载.docx
《Lucene检索数据库支持中文检索Word下载.docx》由会员分享,可在线阅读,更多相关《Lucene检索数据库支持中文检索Word下载.docx(28页珍藏版)》请在冰点文库上搜索。
◦IndexSearcher调用search对查询语法树Query进行搜索,得到结果TopScoreDocCollector。
二:
代码示例(本文重点部分)
1)首先是连接数据库的jdbc配置文件信息以及存放索引文件的路径配置信息
Test.properties代码
1.jdbc.driverClassName
=
com.mysql.jdbc.Driver
2.jdbc.url
jdbc:
mysql:
//192.168.0.1/dbname?
autoReconnect=true&
characterEncoding=utf8
3.jdbc.username
root
4.jdbc.password
password
5.jdbc.maxIdle
2
6.jdbc.maxActive
4
7.jdbc.maxWait
5000
8.jdbc.validationQuery
select
0
9.res.index.indexPath
D\:
\\apache-tomcat-6.0.18\\webapps\\test\\testHome\\search\\res\\index1
10.res.index.mainDirectory
\\apache-tomcat-6.0.18\\webapps\\test\\testHome\\search\\res
jdbc.driverClassName=com.mysql.jdbc.Driver
jdbc.url=jdbc:
characterEncoding=utf8
jdbc.username=root
jdbc.password=password
jdbc.maxIdle=2
jdbc.maxActive=4
jdbc.maxWait=5000
jdbc.validationQuery=select0
res.index.indexPath=D\:
\\apache-tomcat-6.0.18\\webapps\\test\\testHome\\search\\res\\index1
res.index.mainDirectory=D\:
\\apache-tomcat-6.0.18\\webapps\\test\\testHome\\search\\res
2)读取资源文件的工具类:
Java代码
1.package
mon;
2.
3.import
java.io.IOException;
4.import
java.io.InputStream;
5.import
java.util.HashMap;
6.import
java.util.Map;
7.import
java.util.Properties;
8.
9./**
10.
*
PropertiesUtil.java
11.
@version
1.0
12.
@createTime
读取配置文件信息类
13.
*/
14.public
class
PropertiesUtil
{
15.
16.
private
static
String
defaultPropertyFilePath
"
/test.properties"
;
17.
18.
Map<
String,Properties>
ppsMap
new
HashMap<
();
19.
20.
/**
21.
读取默认文件的配置信息,读key返回value
22.
@param
key
23.
@return
value
24.
25.
public
final
getPropertyValue(String
key)
26.
Properties
pps
getPropertyFile(defaultPropertyFilePath);
27.
return
==
null
?
:
pps.getProperty(key);
28.
}
29.
30.
31.
传入filePath读取指定property文件,读key返回value
32.
propertyFilePath
33.
34.
35.
36.
propertyFilePath,String
37.
if(propertyFilePath
null)
38.
propertyFilePath
defaultPropertyFilePath;
39.
40.
getPropertyFile(propertyFilePath);
41.
42.
43.
44.
45.
根据path返回property文件,并保存到HashMap中,提高效率
46.
47.
@return
48.
49.
getPropertyFile(String
propertyFilePath)
50.
51.
null;
52.
53.
ppsMap.get(propertyFilePath);
54.
if(pps
55.
InputStream
in
PropertiesUtil.class.getResourceAsStream(propertyFilePath);
56.
Properties();
57.
try
58.
pps.load(in);
59.
}
catch
(IOException
e)
60.
e.printStackTrace();
61.
62.
ppsMap.put(propertyFilePath,
pps);
63.
64.
65.
pps;
66.
67.}
packagemon;
importjava.io.IOException;
importjava.io.InputStream;
importjava.util.HashMap;
importjava.util.Map;
importjava.util.Properties;
/**
*PropertiesUtil.java
*@version1.0
*@createTime读取配置文件信息类
*/
publicclassPropertiesUtil{
privatestaticStringdefaultPropertyFilePath="
privatestaticMap<
ppsMap=newHashMap<
/**
*读取默认文件的配置信息,读key返回value
*@paramkey
*@returnvalue
publicstaticfinalStringgetPropertyValue(Stringkey){
Propertiespps=getPropertyFile(defaultPropertyFilePath);
returnpps==null?
null:
pps.getProperty(key);
}
*传入filePath读取指定property文件,读key返回value
*@parampropertyFilePath
publicstaticStringgetPropertyValue(StringpropertyFilePath,Stringkey){
if(propertyFilePath==null){
propertyFilePath=defaultPropertyFilePath;
}
Propertiespps=getPropertyFile(propertyFilePath);
*根据path返回property文件,并保存到HashMap中,提高效率
*@parampropertyFilePath
*@return
publicstaticPropertiesgetPropertyFile(StringpropertyFilePath){
returnnull;
Propertiespps=ppsMap.get(propertyFilePath);
if(pps==null){
InputStreamin=PropertiesUtil.class.getResourceAsStream(propertyFilePath);
pps=newProperties();
try{
pps.load(in);
}catch(IOExceptione){
e.printStackTrace();
}
ppsMap.put(propertyFilePath,pps);
returnpps;
}
3)Jdbc连接数据库获取Connection工具类,不做分析,直接上代码
java.sql.Connection;
java.sql.DriverManager;
java.sql.ResultSet;
java.sql.SQLException;
java.sql.Statement;
JdbcUtil.java
JDBC获取Connection工具类
JdbcUtil
Connection
conn
URL;
JDBC_DRIVER;
USER_NAME;
PASSWORD;
URL
PropertiesUtil.getPropertyValue("
jdbc.url"
);
JDBC_DRIVER
jdbc.driverClassName"
USER_NAME
jdbc.username"
PASSWORD
jdbc.password"
getConnection()
Class.forName(JDBC_DRIVER);
DriverManager.getConnection(URL,
USER_NAME,
PASSWORD);
(ClassNotFoundException
(SQLException
conn;
45.}
importjava.sql.Connection;
importjava.sql.DriverManager;
importjava.sql.ResultSet;
importjava.sql.SQLException;
importjava.sql.Statement;
*JdbcUtil.java
*@createTimeJDBC获取Connection工具类
publicclassJdbcUtil{
privatestaticConnectionconn=null;
privatestaticfinalStringURL;
privatestaticfinalStringJDBC_DRIVER;
privatestaticfinalStringUSER_NAME;
privatestaticfinalStringPASSWORD;
static{
URL=PropertiesUtil.getPropertyValue("
JDBC_DRIVER=PropertiesUtil.getPropertyValue("
USER_NAME=PropertiesUtil.getPropertyValue("
PASSWORD=PropertiesUtil.getPropertyValue("
publicstaticConnectiongetConnection(){
try{
Class.forName(JDBC_DRIVER);
conn=DriverManager.getConnection(URL,USER_NAME,PASSWORD);
}catch(ClassNotFoundExceptione){
e.printStackTrace();
}catch(SQLExceptione){
returnconn;
4)万事具备,只欠东风了,下面是核心部分,方法都有注释,不多说了,一步步来,我想肯定是没有问题的。
代码如下:
com.test.lucene.logic;
java.io.File;
java.util.ArrayList;
8.import
java.util.List;
9.
10.import
org.apache.lucene.analysis.Analyzer;
11.import
org.apache.lucene.document.Document;
12.import
org.apache.lucene.document.Field;
13.import
org.apache.lucene.document.Field.TermVector;
14.import
org.apache.lucene.index.IndexWriter;
15.import
org.apache.lucene.queryParser.QueryParser;
16.import
org.apache.lucene.search.IndexSearcher;
17.import
org.apache.lucene.search.Query;
18.import
org.apache.lucene.search.ScoreDoc;
19.import
org.apache.lucene.search.Searcher;
20.import
org.apache.lucene.search.TopDocs;
21.import
org.apache.lucene.store.Directory;
22.import
org.apache.lucene.store.FSDirectory;
23.import
org.apache.lucene.util.Version;
24.import
org.wltea.analyzer.lucene.IKAnalyzer;
25.import