zoukankan      html  css  js  c++  java
  • lucene Hello World

    一个lucene创建索引和查找索引的样例:

    创建索引:

    public class Indexer {
    private  IndexWriter indexWriter;
    /**
     * 构造器实例化indexWriter
     * @throws Exception 
     */
    public Indexer(String indexPath) throws Exception {
    Directory directory = FSDirectory.open(Paths.get(indexPath));//索引存储的位置
    Analyzer analyzer = new StandardAnalyzer();//标准分析器
    IndexWriterConfig iwc = new IndexWriterConfig(analyzer);
    indexWriter = new IndexWriter(directory, iwc);
    }
    /**
     * 关闭indexWriter
     * @param indexWriter
     * @throws IOException 
     */
    public void close() throws Exception {
    indexWriter.close();
    }
    /**
     * 获取文档Document
     * @throws FileNotFoundException 
     */
    public Document getDocumnet(File f) throws Exception {
    Document doc = new Document();
    doc.add(new TextField("content", new FileReader(f)));
    doc.add(new TextField("tittle",f.getName(),Field.Store.YES));
    doc.add(new TextField("path",f.getCanonicalPath(), Field.Store.YES));
    return doc;
    }
    /**
     * 索引当个文件
     * @throws Exception 
     */
    public void indexFile(File f) throws Exception {
    System.out.println(f.getName());
    Document doc = this.getDocumnet(f);
    indexWriter.addDocument(doc);
    }
    /**
     * 索引一个目录下的所有文件
     * @param filePath 目录路径
     * @return 索引文件的个数
     * @throws Exception 
     */
    public int index(String filePath) throws Exception {
    File[] files = new File(filePath).listFiles();
    for(File f:files) {
    this.indexFile(f);
    }
    return indexWriter.numDocs();
    }
    public static void main(String[] args) {
            String indexPath = "G:\工作\luence\index";
            String dataPath = "G:\工作\luence\data";
            Indexer indexer = null;
            int indexNum=0;
            try {
                indexer = new Indexer(indexPath);
                indexNum = indexer.index(dataPath);
            } catch (Exception e) {
                e.printStackTrace();
            }finally {
                try {
                    indexer.close();
                } catch (Exception e) {
                    e.printStackTrace();
                }
            }
            System.out.println("索引了"+indexNum+"个文件");
        }
    }

    查找索引:

    public class Searcher {
    public static void search(String indexPath,String searchStr) throws Exception {
     
    Directory dir = FSDirectory.open(Paths.get(indexPath));
    IndexReader indeReader = DirectoryReader.open(dir);
    IndexSearcher indexSearch = new IndexSearcher(indeReader);
     
    Analyzer analyzer = new StandardAnalyzer();//标准分词器
    QueryParser parser = new QueryParser("content", analyzer);
    Query query = parser.parse(searchStr);
    TopDocs td = indexSearch.search(query, 10);
    for(ScoreDoc sc:td.scoreDocs) {
    Document doc = indexSearch.doc(sc.doc);
    System.out.println(doc.get("tittle"));
    System.out.println(doc.get("path"));
    }
    }
    public static void main(String[] args) throws Exception {
    Searcher.search("G:\工作\luence\index\", "Hollywood");
    }
    }
  • 相关阅读:
    125、TensorFlow计算图的执行
    123、TensorFlow的Job
    122、TensorFlow多设备运行
    121、TensorFlow张量命名
    关于CSRF跨域请求伪造的解决办法
    angular基于ui-router实现系统权限控制
    gulp自动化打包及静态文件自动添加版本号
    深入研究HTML5实现图片压缩上传
    移动web模拟客户端实现多方框输入密码效果
    高级功能:很有用的javascript自定义事件
  • 原文地址:https://www.cnblogs.com/jnba/p/10522723.html
Copyright © 2011-2022 走看看