利用Lucene给网站、系统增加搜索功能

有些网站的搜索功能都是直接使用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);

    }

 

}

 

你可能感兴趣的:(Lucene)