相关资料:http://ultimania.org/sen/
perl5.6以降:http://www.activestate.com/store/download.aspx?prdGUID=81fbce82-6bd5-49bc-a915-08d58c2648ca
ant1.5以降:http://ant.apache.org/bindownload.cgi
注意)ant -Dperl.bin=D:/Java/Perl/bin/perl.exe
下载地址:https://sen.dev.java.net/servlets/ProjectDocumentList?folderID=755&expandFolder=755&folderID=0
代码如下:
package
demo;
import
java.io.BufferedReader;
import
java.io.IOException;
import
java.io.InputStreamReader;
import
org.apache.lucene.analysis.Analyzer;
import
org.apache.lucene.analysis.ja.JapaneseAnalyzer;
import
org.apache.lucene.document.Document;
import
org.apache.lucene.document.Field;
import
org.apache.lucene.index.IndexWriter;
import
org.apache.lucene.queryParser.ParseException;
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
org.apache.lucene.store.Directory;
import
org.apache.lucene.store.FSDirectory;
import
org.apache.lucene.store.RAMDirectory;
public
class
HelloLucene
...
{
private static final String FIELD_CONTENT = "content";
private static final String SEN_XML_PATH = "D:/Java/sen-1.2.2.1/conf/sen.xml";
private static final Directory directory = new RAMDirectory();
private static final Analyzer analyzer = new JapaneseAnalyzer(SEN_XML_PATH);
private static final QueryParser qp = new QueryParser( FIELD_CONTENT, analyzer );
private static final String[] contents = ...{
"カツオはサザエの弟", "サザエはワカメの姉", "ワカメはカツオの妹",
"カツオは長男", "サザエは長女", "ワカメは次女",
"マスオはサザエの夫", "波平は舟の夫", "タラちゃんのパパはマスオ",
"サザエとマスオは夫婦", "波平はタラちゃんの祖父", "舟はカツオの母",
"マスオはカツオの義兄", "カツオはタラちゃんの叔父", "舟はワカメの母"
};
public static void main( String[] args ) throws IOException, ParseException ...{
makeIndex();
backupIndex();
BufferedReader br = new BufferedReader( new InputStreamReader( System.in ) );
String q = null;
while( q == null || !q.equals( "q" ) )...{
System.out.print( " 検索質問(qで終了)> " );
System.out.flush();
q = br.readLine();
if( !q.equals( "q" ) )
searchIndex( q );
}
br.close();
if( directory != null )
directory.close();
}
private static void makeIndex() throws IOException ...{
IndexWriter writer = new IndexWriter( directory, analyzer, true );
for( int i = 0; i < contents.length; i++ )...{
Document doc = new Document();
doc.add( new Field( FIELD_CONTENT, contents[i], Field.Store.YES, Field.Index.TOKENIZED ) );
writer.addDocument( doc );
}
writer.close();
}
private static void searchIndex( final String q ) throws IOException, ParseException ...{
IndexSearcher searcher = new IndexSearcher( directory );
Query query = qp.parse( q );
Hits hits = searcher.search( query );
int length = hits.length();
System.out.println( Integer.toString( length ) + "件ヒットしました。" );
for( int i = 0; i < length; i++ )...{
Document doc = hits.doc( i );
System.out.println( " " + doc.get( FIELD_CONTENT ) );
}
searcher.close();
}
private static void backupIndex() throws IOException...{
Directory persistent = FSDirectory.getDirectory( "index" );
Directory.copy( directory, persistent, false );
persistent.close();
}
}
参考资料:
http://lucene.jugem.jp/?month=200703
http://www.geocities.jp/another4000yrs/lucene/
http://repository.kulib.kyoto-u.ac.jp/dspace-memo/japanization.html
http://lucene.jugem.jp/?eid=53
http://lucene.jugem.jp/?eid=97
http://www.getopt.org/luke/
中文相关:
http://www.javaeye.com/topic/49441?page=6
http://blog.cnblog.org/archives/2005/07/luceneaecee.html
http://blog.csdn.net/ugg/archive/2007/03/06/1522624.aspx
http://www.ideagrace.com/html/doc/2007/02/07/08630.html