Lucene 1.4.3
- ライブラリのインストール
以下のサイトよりライブラリをダウンロード。
https://sen.dev.java.net/...
# cd /usr/local/arch # wget https://sen.dev.java.net/.../lucene-ja-1.4.3sen1.2-2.zip # cd ../src # jar xvf ../arch/lucene-ja-1.4.3sen1.2-2.zip # cp lucene-ja/lib/lucene-1.4.3.jar /home/test/WEB-INF/lib # cp lucene-ja/lib/lucene-ja.jar /home/test/WEB-INF/lib
- サンプルソース
# cd /home/test/src/com/domain/test # vi SearchTest.java
package com.domain.test;
import java.io.File;
import java.io.FileInputStream;
import java.text.SimpleDateFormat;
import org.apache.lucene.analysis.Analyzer;
import org.apache.lucene.analysis.cjk.CJKAnalyzer;
import org.apache.lucene.document.Document;
import org.apache.lucene.document.Field;
import org.apache.lucene.index.IndexWriter;
import org.apache.lucene.index.IndexReader;
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 com.domain.service.DaoService;
import com.domain.pojo.TestData;
public class SearchTest{
private DaoService ds;
private SearchTest(){
try{
beanFactory=new XmlBeanFactory(new FileInputStream(appContextXml));
ds=(DaoService)beanFactory.getBean(daoService);
}
catch(Exception e){
e.printStackTrace();
}
}
public static void main(String args[]){
SearchTest st=new SearchTest();
st.execute();
}
public void execute(){
try{
//make index
Analyzer analyzer=new CJKAnalyzer();
File file=new File("indexPath");
IndexWriter iw=new IndexWriter(file,analyzer,true);
TestData[] testDatas=ds.getTestDataAll();
for(int i=0; i<testDatas.length; i++){
iw.addDocument(makeDocument(testDatas[i]));
}
iw.optimize();
iw.close();
//request query
IndexReader ir=IndexReader.open(itemIndexPath);
IndexSearcher is=new IndexSearcher(ir);
Query q=QueryParser.parse("searchWord","text",analyzer);
Hits hits=is.search(q);
TestData[] testDatas=new TestData[hits.length()];
for(int i=0; i<hits.length(); i++){
Document document=hits.doc(i);
TestData td=new TestData();
if(document.get("updated")!=null){
SimpleDateFormat sdf=new SimpleDateFormat("yyyy-MM-dd HH:mm:ss.S");
td.setRegDate(sdf.parse(document.get("updated")));
}
td.setTestUrl(document.get("url"));
td.setTestTitle(document.get("title"));
td.setTestDesc(document.get("desc"));
testDatas[i]=testData;
}
ir.close();
is.close();
}
catch(Exception e){
e.printStackTrace();
}
}
private Document makeDocument(TestData testData){
Document document=new Document();
document.add(Field.UnIndexed("updated",testData.getRegDate().toString()));
document.add(Field.UnIndexed("url",testData.getTestUrl()));
document.add(Field.UnIndexed("title",testData.getTestName()));
document.add(Field.UnIndexed("desc",testData.getTestDesc()));
document.add(Field.UnStored("text",testData.getTestName()+testData.getTestDesc()));
return document;
}
}
Counter: 639,
today: 1,
yesterday: 0
最終更新: 2008-11-26 (水) 02:06:16 (JST) (1272d) by aqua
