全文はファイルに保存されたデータを取得します.簡単な例です.


1、索引の作成
package com.dream.index;

import java.io.BufferedReader;
import java.io.File;
import java.io.FileReader;
import java.io.IOException;
import java.io.Reader;

import org.apache.lucene.analysis.Analyzer;
import org.apache.lucene.analysis.standard.StandardAnalyzer;
import org.apache.lucene.demo.html.HTMLParser;
import org.apache.lucene.document.Document;
import org.apache.lucene.document.Field;
import org.apache.lucene.index.IndexWriter;
import org.apache.lucene.store.Directory;
import org.apache.lucene.store.FSDirectory;
import org.htmlparser.Parser;


/**
 *      
 *        
 */
public class IndexMgr {
	
	private  String dataDir = "";//      
	private  String indexDir = "";//        
	
	public IndexMgr(){}
	
	/**
	 * 
	 * @param dataDir           
	 * @param indexDir         
	 */
	public IndexMgr(String dataDir,String indexDir){
		this.dataDir = dataDir;
		this.indexDir = indexDir;
	}
	
	/**
	 *     
	 * @throws IOException 
	 * @throws InterruptedException 
	 */
	public boolean createIndex() throws IOException, InterruptedException{
		
//		if(isIndexExist()){//       
//			return true;
//		}
		File dir = new File(dataDir);
		if(!dir.exists()){
			return false;
		}
		
		File[] htmls = dir.listFiles();
		//         
		//Directory fsDirectory = FSDirectory.getDirectory(indexDir, true);
		//   
		Analyzer analyzer = new StandardAnalyzer();
		//   Document      
		IndexWriter indexWriter = new IndexWriter(this.indexDir,analyzer,true);
		
		for (int i = 0; i < htmls.length; i++) {
			String htmlPath = htmls[i].getAbsolutePath();
			
				addDocument(htmlPath, indexWriter);

		}
		indexWriter.optimize();
		indexWriter.close();
		return true;
	}
	
	/**
	 *  Document      
	 * @throws InterruptedException 
	 * @throws IOException 
	 */
	public void addDocument(String filePath,IndexWriter indexWriter) throws IOException, InterruptedException{
		
		String content = readFileByLines(filePath);
		Document document = new Document();
		document.add(new Field("title",content,Field.Store.YES,Field.Index.TOKENIZED));
		indexWriter.addDocument(document);
	}
	
	public String readFileByLines(String fileName){
		   File file = new File(fileName);
		   BufferedReader reader = null;
		   StringBuffer retString = new StringBuffer();
		   try {
		    reader = new BufferedReader(new FileReader(file));
		    String tempString = null;
		    int line = 1;
		    //һ�ζ���һ�У�ֱ������nullΪ�ļ�����
		    while ((tempString = reader.readLine()) != null){
		     //��ʾ�к�
		     retString.append(tempString);
		     retString.append("
"); line++; } reader.close(); } catch (IOException e) { e.printStackTrace(); } finally { if (reader != null){ try { reader.close(); } catch (IOException e1) { } } } return retString.toString(); } /** * * @param indexDir */ public boolean isIndexExist(){ File directory = new File(indexDir); if(directory.listFiles().length > 0){ return true; }else{ return false; } } public String getDataDir() { return dataDir; } public void setDataDir(String dataDir) { this.dataDir = dataDir; } public String getIndexDir() { return indexDir; } public void setIndexDir(String indexDir) { this.indexDir = indexDir; } }

2、検索を実行する
package com.dream.index;

import java.io.BufferedReader;
import java.io.File;
import java.io.FileReader;
import java.io.IOException;
import java.io.Reader;

import org.apache.lucene.analysis.Analyzer;
import org.apache.lucene.analysis.standard.StandardAnalyzer;
import org.apache.lucene.demo.html.HTMLParser;
import org.apache.lucene.document.Document;
import org.apache.lucene.document.Field;
import org.apache.lucene.index.IndexWriter;
import org.apache.lucene.store.Directory;
import org.apache.lucene.store.FSDirectory;
import org.htmlparser.Parser;


/**
 *      
 *        
 */
public class IndexMgr {
	
	private  String dataDir = "";//      
	private  String indexDir = "";//        
	
	public IndexMgr(){}
	
	/**
	 * 
	 * @param dataDir           
	 * @param indexDir         
	 */
	public IndexMgr(String dataDir,String indexDir){
		this.dataDir = dataDir;
		this.indexDir = indexDir;
	}
	
	/**
	 *     
	 * @throws IOException 
	 * @throws InterruptedException 
	 */
	public boolean createIndex() throws IOException, InterruptedException{
		
//		if(isIndexExist()){//       
//			return true;
//		}
		File dir = new File(dataDir);
		if(!dir.exists()){
			return false;
		}
		
		File[] htmls = dir.listFiles();
		//         
		//Directory fsDirectory = FSDirectory.getDirectory(indexDir, true);
		//   
		Analyzer analyzer = new StandardAnalyzer();
		//   Document      
		IndexWriter indexWriter = new IndexWriter(this.indexDir,analyzer,true);
		
		for (int i = 0; i < htmls.length; i++) {
			String htmlPath = htmls[i].getAbsolutePath();
			
				addDocument(htmlPath, indexWriter);

		}
		indexWriter.optimize();
		indexWriter.close();
		return true;
	}
	
	/**
	 *  Document      
	 * @throws InterruptedException 
	 * @throws IOException 
	 */
	public void addDocument(String filePath,IndexWriter indexWriter) throws IOException, InterruptedException{
		
		String content = readFileByLines(filePath);
		Document document = new Document();
		document.add(new Field("title",content,Field.Store.YES,Field.Index.TOKENIZED));
		indexWriter.addDocument(document);
	}
	
	public String readFileByLines(String fileName){
		   File file = new File(fileName);
		   BufferedReader reader = null;
		   StringBuffer retString = new StringBuffer();
		   try {
		    reader = new BufferedReader(new FileReader(file));
		    String tempString = null;
		    int line = 1;
		    //һ�ζ���һ�У�ֱ������nullΪ�ļ�����
		    while ((tempString = reader.readLine()) != null){
		     //��ʾ�к�
		     retString.append(tempString);
		     retString.append("
"); line++; } reader.close(); } catch (IOException e) { e.printStackTrace(); } finally { if (reader != null){ try { reader.close(); } catch (IOException e1) { } } } return retString.toString(); } /** * * @param indexDir */ public boolean isIndexExist(){ File directory = new File(indexDir); if(directory.listFiles().length > 0){ return true; }else{ return false; } } public String getDataDir() { return dataDir; } public void setDataDir(String dataDir) { this.dataDir = dataDir; } public String getIndexDir() { return indexDir; } public void setIndexDir(String indexDir) { this.indexDir = indexDir; } }

3、コントローラ
package com.dream.servlet;

import java.io.IOException;
import java.io.PrintWriter;
import java.util.ArrayList;
import java.util.List;

import javax.servlet.RequestDispatcher;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import sun.rmi.server.Dispatcher;

import com.dream.index.IndexMgr;
import com.dream.search.SearchMgr;

public class ToSearch extends HttpServlet {

	public ToSearch() {
		super();
	}

	public void destroy() {
		super.destroy();
	}

	public void doGet(HttpServletRequest request, HttpServletResponse response)
			throws ServletException, IOException {
		doPost(request, response);
	}

	public void doPost(HttpServletRequest request, HttpServletResponse response)
			throws ServletException, IOException {
		String keyword = request.getParameter("keyword");
		List searchResult = new ArrayList();
		SearchMgr searchMgr = new SearchMgr(keyword);
		IndexMgr indexMgr = new IndexMgr();
		//            
		indexMgr.setDataDir("D:\\dataDir");
		//         
		indexMgr.setIndexDir("D:\\indexDir");
		searchMgr.setIndexMgr(indexMgr);
		searchResult = searchMgr.search();
		request.setAttribute("searchResult", searchResult);
		RequestDispatcher rdp = request.getRequestDispatcher("index.jsp");
		rdp.forward(request, response);
		
	}


	public void init() throws ServletException {
	}
	
}