有些网站的搜索功能都是直接使用like %关键词%方式对数据库进行关键词查找,不过这种方式速度比较慢,而且影响数据库服务器性能。
其实我们可以先把数据从数据库查询出来,利用Lucene建立索引。以后每次查找都从索引中查找,可以提高查询速度和减轻服务器负担。
本篇用到的技术:Lucene 3.0.2 , IKAnalyzer 3.2.5
search.properties主要是配置搜索的信息,内容:
sql=select iId,title,content,credate from archeive //指定查找sql,需要建立索引的数据
update.field=iId
update.value=
search.condition=title,content //搜索时的查找字段
index.path=D:/project/Java/lucene/WebContent/WEB-INF/classes/Index //索引的保存地址
period=10000 //更新索引的时间间隔
com.search.util.SearchConfig主要是读取search.properties的信息。
public class SearchConfig {
private Properties searchPro;
private String searchFile = "search.properties";
private String SQL = "sql";
private String CONDITION = "search.condition";
private String INDEX = "index.path";
public SearchConfig(){
initSearch();
}
public void initSearch(){
searchPro = PropertiesUtil.getProperties(searchFile);
}
public String getSql(){
return searchPro.getProperty(SQL, "");
}
public String getCondition(){
return searchPro.getProperty(CONDITION, "");
}
public File getIndexPath(){
String path = searchPro.getProperty(INDEX, "");
File file = new File(path);
if (!file.exists()) {
file.mkdir();
}
return file;
}
public long getPeriod(){
String period = searchPro.getProperty("period", "0");
return Integer.valueOf(period);
}
public String getUpdateField(){
return searchPro.getProperty("update.field", "");
}
public String getUpdateValue(){
return searchPro.getProperty("update.value", "");
}
public void save(){
PropertiesUtil.saveProperties(searchPro, searchFile);
}
}