Lucene4.0入门实例

来源:互联网 发布:怎么在淘宝开网店 编辑:程序博客网 时间:2024/05/19 17:04
<span style="font-size:18px;">//创建索引</span>
<span style="font-size:18px;">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);    }}</span>

对索引进行搜索

<span style="font-size:18px;">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();    }}</span>


0 0