首页 > 代码库 > lucene简单实例

lucene简单实例

创建索引的代码如下:

package com.search.lucene;import java.io.File;import org.apache.lucene.analysis.Analyzer;import org.apache.lucene.analysis.standard.StandardAnalyzer;import org.apache.lucene.document.Document;import org.apache.lucene.document.Field.Store;import org.apache.lucene.document.StringField;import org.apache.lucene.document.TextField;import org.apache.lucene.index.IndexWriter;import org.apache.lucene.index.IndexWriterConfig;import org.apache.lucene.store.Directory;import org.apache.lucene.store.FSDirectory;import org.apache.lucene.util.Version;import org.junit.Before;import org.junit.Test;public class IndexFile {    protected String[] ids={"1", "2"};    protected String[] content={"Amsterdam has lost of add  cancals", "i love  add this girl"};    protected String[] city={"Amsterdam", "Venice"};    private Directory dir;    /**     * 初始添加文档     * @throws Exception     */    @Test    public void init() throws Exception {        String pathFile="D://lucene/index";        dir=FSDirectory.open(new File(pathFile));        IndexWriter writer=getWriter();        for(int i=0; i < ids.length; i++) {            Document doc=new Document();            doc.add(new StringField("id", ids[i], Store.YES));            doc.add(new TextField("content", content[i], Store.YES));            doc.add(new StringField("city", city[i], Store.YES));            writer.addDocument(doc);        }        System.out.println("init ok?");        writer.close();    }    /**     * 获得IndexWriter对象     * @return     * @throws Exception     */    public IndexWriter getWriter() throws Exception {        Analyzer analyzer=new StandardAnalyzer(Version.LUCENE_40);        IndexWriterConfig iwc=new IndexWriterConfig(Version.LUCENE_40, analyzer);        return new IndexWriter(dir, iwc);    }}

 说明下:lucene4.0中有核心包和其他包:我导入

package com.search.lucene;import java.io.File;import org.apache.lucene.document.Document;import org.apache.lucene.index.DirectoryReader;import org.apache.lucene.index.IndexReader;import org.apache.lucene.index.Term;import org.apache.lucene.search.IndexSearcher;import org.apache.lucene.search.ScoreDoc;import org.apache.lucene.search.TermQuery;import org.apache.lucene.search.TopDocs;import org.apache.lucene.store.Directory;import org.apache.lucene.store.FSDirectory;import org.junit.Test;public class IndexSearch {    /**     * 查询     * @throws Exception     */    @Test    public void search() throws Exception {        String filePath="D://lucene/index";        Directory dir=FSDirectory.open(new File(filePath));        IndexReader reader=DirectoryReader.open(dir);        IndexSearcher searcher=new IndexSearcher(reader);        Term term=new Term("content", "add");        TermQuery query=new TermQuery(term);        TopDocs topdocs=searcher.search(query, 5);        ScoreDoc[] scoreDocs=topdocs.scoreDocs;        System.out.println("查询结果总数---" + topdocs.totalHits+"最大的评分--"+topdocs.getMaxScore());        for(int i=0; i < scoreDocs.length; i++) {            int doc = scoreDocs[i].doc;            Document document = searcher.doc(doc);            System.out.println("content===="+document.get("content"));            System.out.println("id--" + scoreDocs[i].doc + "---scors--" + scoreDocs[i].score+"---index--"+scoreDocs[i].shardIndex);        }        reader.close();    }}

 

result:

  查询结果总数---2最大的评分--0.2972674

content====i love  add this girlid--1---scors--0.2972674---index---1content====Amsterdam has lost of add  cancalsid--0---scors--0.26010898---index---1

 

lucene简单实例