Lucene5.2.0+SQLite Demo

来源:互联网 发布:it is not until 编辑:程序博客网 时间:2024/04/25 10:18

1.索引建立:

import org.apache.lucene.analysis.standard.StandardAnalyzer;import org.apache.lucene.document.Document;import org.apache.lucene.document.Field;import org.apache.lucene.document.LongField;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 java.nio.file.Paths;import java.sql.Connection;import java.sql.DriverManager;import java.sql.ResultSet;import java.sql.SQLException;import java.sql.Statement;public class testIndex {    protected static  String[] ids={"1", "2"};      protected static  String[] content={"lv qin jie", "lv jian jun"};      private static Directory dir;      public static void main(String[] args) throws Exception{        Connection connection = null;        String pathFile="d:\\lucene\\temp\\index";          IndexWriter writer = new IndexWriter(FSDirectory.open(Paths.get(pathFile)), new IndexWriterConfig(new StandardAnalyzer()));        try        {           // create a database connection          Class.forName("org.sqlite.JDBC");            connection = DriverManager.getConnection("jdbc:sqlite:d:\\研究生\\data\\access.db");          Statement statement = connection.createStatement();          statement.setQueryTimeout(30);  // set timeout to 30 sec.          ResultSet rs = statement.executeQuery("select * from person");          while(rs.next()){              Document doc=new Document();              doc.add(new LongField("id", rs.getLong("id"), Field.Store.YES));                doc.add(new TextField("name", rs.getString("name"), Field.Store.YES));               writer.addDocument(doc);            }        }catch(SQLException e){          System.err.println(e.getMessage());        }finally{          try{            if(connection != null) connection.close();            if(writer != null) writer.close();          }catch(SQLException e){            // connection close failed.            System.err.println(e);          }        }    }}

2. 搜索

import java.io.IOException;import java.nio.file.Paths;import org.apache.lucene.analysis.Analyzer;import org.apache.lucene.analysis.standard.StandardAnalyzer;import org.apache.lucene.document.Document;import org.apache.lucene.index.DirectoryReader;import org.apache.lucene.index.IndexReader;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.search.TopDocs;import org.apache.lucene.store.FSDirectory;public class testSearch {    public static void main(String[] args) throws ParseException, IOException{        IndexReader reader = DirectoryReader.open(FSDirectory.open(Paths.get("d:\\lucene\\temp\\index")));        IndexSearcher searcher = new IndexSearcher(reader);        Analyzer analyzer = new StandardAnalyzer();        String keyword = "wang";        QueryParser parser = new QueryParser("name",analyzer);        if(!(keyword.isEmpty())){            Query query = parser.parse(keyword);            TopDocs results = searcher.search(query, 100);            ScoreDoc[] hits = results.scoreDocs;            int i=0;            for(ScoreDoc hit: hits){                Document document = searcher.doc(hit.doc);                String idString = document.get("id");                String nameString = document.get("name");                System.out.println("id:"+idString+" name:"+nameString);            }        }       }}
0 0
原创粉丝点击