⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 quicksearcher.java

📁 全文搜索源码,基于开源项目Lucene编写,开发语言为JAVA,本程序做为LUCENE的示例DEMO
💻 JAVA
字号:
package com.ht.lucenedemo;

import org.apache.lucene.analysis.Analyzer;
import org.apache.lucene.analysis.standard.StandardAnalyzer;
import java.io.File;
import java.util.Date;
import org.apache.lucene.index.IndexWriter;
import java.io.Reader;
import org.apache.lucene.document.Document;
import org.apache.lucene.document.Field;
import org.apache.lucene.store.*;
import java.io.FileReader;
import org.apache.lucene.search.Query;
import org.apache.lucene.search.Hits;
import org.apache.lucene.search.IndexSearcher;
import org.apache.lucene.queryParser.QueryParser;

public class QuickSearcher {
  public QuickSearcher() {
  }
  public static void main(String[] args)throws Exception{
    File   dataDir  = new File("D:\\luceneData");
    Analyzer luceneAnalyzer = new StandardAnalyzer();
    File[] dataFiles  = dataDir.listFiles();
    Directory indexDir = new RAMDirectory("D:\\luceneIndex");
    IndexWriter indexWriter = new IndexWriter(indexDir,luceneAnalyzer,true);
    long startTime = new Date().getTime();
    for (int i = 0; i < dataFiles.length; i++) {
      if (dataFiles[i].isFile() && dataFiles[i].getName().endsWith(".txt")) {
        System.out.println("Indexing file " + dataFiles[i].getCanonicalPath());
        Document document = new Document();
        Reader txtReader = new FileReader(dataFiles[i]);
        document.add(Field.Text("path", dataFiles[i].getCanonicalPath()));
        document.add(Field.Text("contents", txtReader));
        indexWriter.addDocument(document);
      }
    }
    indexWriter.optimize();
    indexWriter.close();
    long endTime = new Date().getTime();

    System.out.println("It takes " + (endTime - startTime) +
                       " milliseconds to create index for the files in directory "
                       + dataDir.getPath());

    String queryStr = "索含";
    IndexSearcher searcher = new IndexSearcher(indexDir);
    Analyzer analyzer = new StandardAnalyzer();
    QueryParser parser = new QueryParser("contents" , analyzer);
    startTime = new Date().getTime();
    Query query = parser.parse(queryStr);

    Hits hits = searcher.search(query);
    for (int i = 0; i < hits.length(); i++) {
      Document document = hits.doc(i);
      System.out.println("File: " + document.get("path"));
    }
    endTime = new Date().getTime();
    System.out.println("It takes " + (endTime - startTime)+" milliseconds to query");
  }
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -