lucene基本使用

import java.io.File;
import java.io.IOException;
import org.apache.lucene.analysis.Analyzer;
import org.apache.lucene.analysis.Token;
import org.apache.lucene.analysis.standard.StandardAnalyzer;
import org.apache.lucene.document.Document;
import org.apache.lucene.document.Field;
import org.apache.lucene.document.TextField;
import org.apache.lucene.index.DirectoryReader;
import org.apache.lucene.index.IndexReader;
import org.apache.lucene.index.IndexWriter;
import org.apache.lucene.index.IndexWriterConfig;
import org.apache.lucene.index.Term;
import org.apache.lucene.queryparser.classic.ParseException;
import org.apache.lucene.queryparser.classic.QueryParser;
import org.apache.lucene.search.IndexSearcher;
import org.apache.lucene.search.Query;
import org.apache.lucene.search.ScoreDoc;
import org.apache.lucene.store.Directory;
import org.apache.lucene.store.FSDirectory;
import org.apache.lucene.store.RAMDirectory;
import org.apache.lucene.util.Version;


public class T {


            public void baseConcept() {
                        //store
                        Directory directory;
                        //document
                        Document document;
                        Field field;
                        //index
                        Term term;
                        IndexReader reader;
                        IndexWriter writer;
                        //analysis
                        Analyzer analyzer;
                        Token token;
                        
                        
            }


            public static void createIndex() throws IOException {
                        //lucene-analyzers-common analysis.standard
                        Analyzer analyzer = new StandardAnalyzer(Version.LUCENE_48);


                        //store the index in momoey
                        //Directory directory = new RAMDirectory();
                        //To store an index on disk ,use this instead
                        Directory d = FSDirectory.open(new File("/home/zcwangjb/tmp/lucene"));
                        IndexWriterConfig config = new IndexWriterConfig(Version.LUCENE_48, analyzer);
                        IndexWriter writer = new IndexWriter(d, config);
                        //
                        Document document = new Document();
                        String txt = "This is the text to be indexed";
                        document.add(new Field("fieldname", txt, TextField.TYPE_STORED));
                        writer.addDocument(document);
                        writer.close();


                        writer.close();
                        d.close();
            }


            public static void readIndex() throws IOException, ParseException {
                        Directory d = FSDirectory.open(new File("/home/zcwangjb/tmp/lucene"));
                        DirectoryReader reader = DirectoryReader.open(d);
                        IndexSearcher ir = new IndexSearcher(reader);
                        //
                        Analyzer analyzer = new StandardAnalyzer(Version.LUCENE_48);
                        QueryParser parser = new QueryParser(Version.LUCENE_48, "fieldname", analyzer);
                        Query query = parser.parse("text");
                        ScoreDoc[] hits = ir.search(query, null, 1000).scoreDocs;
                        System.out.println("hits:" + hits.length);


                        for (int i = 0; i < hits.length; i++) {
                                    Document document = ir.doc(hits[i].doc);
                                    System.out.println("doc:" + document.get("fieldname"));
                        }


                        reader.close();
                        d.close();


            }


            public static void main(String[] args) throws IOException, ParseException {
                        // createIndex();
                        readIndex();
            }
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值