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

📄 sockserver2.java

📁 Lucene+nuctch一书的全部源码 测试源码 和几个简单的项目
💻 JAVA
字号:
package chapter10;

import java.io.*;
import java.net.*;

import org.apache.lucene.document.Field;
import org.apache.lucene.document.Document;
import org.apache.lucene.index.IndexWriter;
import org.apache.lucene.analysis.Analyzer;
import org.apache.lucene.analysis.TokenStream;
import org.apache.lucene.analysis.Token;
import org.apache.lucene.index.*;
import org.apache.lucene.search.*;
import java.io.IOException;
import java.util.Date;

import org.apache.lucene.index.Term;
import org.apache.lucene.document.Field;
import org.apache.lucene.document.Document;
import org.apache.lucene.index.IndexWriter;
import org.apache.lucene.analysis.Analyzer;
import org.apache.lucene.analysis.SimpleAnalyzer;

import org.apache.lucene.search.Query;
import org.apache.lucene.search.Hits;
import org.apache.lucene.search.TermQuery;
import org.apache.lucene.search.IndexSearcher;
import org.apache.lucene.queryParser.*;
import org.apache.lucene.search.highlight.*;

import org.apache.lucene.search.BooleanQuery;

import org.apache.lucene.store.Directory; 
import org.apache.lucene.store.RAMDirectory;

import org.apache.lucene.search.DefaultSimilarity;

import org.apache.lucene.analysis.standard.StandardAnalyzer;
import org.apache.lucene.search.payloads.BoostingTermQuery;

public class SockServer2 extends Thread {
	 private Socket socket;
	 private BufferedReader in;
	 private PrintWriter out;
	 private String content;
	 private  Lucenesearch searchtool = new Lucenesearch();
	 public SockServer2(Socket sock,String strcont)throws IOException {
		 socket=sock;
		 content=strcont;
		 in=new BufferedReader(
		 new InputStreamReader(
		 socket.getInputStream()));
		 out=new PrintWriter(
		 new BufferedWriter(
		 new OutputStreamWriter(
		 socket.getOutputStream())),true);
		 start();
	}
	public void run(){
		 try{
			 while (true){
				 String str=in.readLine();
				 if (str.equals("END"))break;
				 System.out.println("Echoing:"+str);
				 String result = searchtool.search(str);
				 out.write(result);
			 }
			 System.out.println("Closing...");
		 }catch(IOException e){ 
		 }finally{
		 try{
		 socket.close();
		 }catch(IOException e){}
		 }
	}
	
	private class Lucenesearch {

		 public Lucenesearch(){
		  try{
		   searcher = new IndexSearcher(IndexReader.open("D:\\workshop\\pdfindex"));
		  }catch(Exception e){
		   e.printStackTrace();
		  }
		 }
		 
		 //声明一个IndexSearcher对象
		 private IndexSearcher searcher = null;
		 //声明一个Query对象
		 private Query query = null;
		 StandardAnalyzer analyzer = new StandardAnalyzer();
		 Highlighter highlighter = null;
		 public final Hits search(String keyword){
			 
		  System.out.println("正在检索关键字:"+keyword);
		  try{
			   QueryParser qp = new QueryParser("title",analyzer);
			   query = qp.parse(keyword);
			   Term term = new Term("content",keyword);
			   FuzzyQuery fq = new FuzzyQuery(term);
			   Date start = new Date();
			   Hits hits = searcher.search(query);
			   SimpleHTMLFormatter simpleHTMLFormatter = new SimpleHTMLFormatter("<read>","</read>");   
			   highlighter = new Highlighter(simpleHTMLFormatter,new QueryScorer(query));      
			   highlighter.setTextFragmenter(new SimpleFragmenter(10));
			   Date end = new Date();
			   return hits;
		  }catch(Exception e){
		   e.printStackTrace();
		   return null;
		  }
		 }
		 
		 public String exportResult(Hits h){
			 String result = null;
			  if(h.length() == 0){
			   System.out.println("未发现结果.");
			   result = "未发现结果.";
			  }else{
			   for(int i = 0; i < h.length(); i++){
			    try{
			     Document doc = h.doc(i);
			     result = result + doc.get("content");
			     TokenStream tokenStream =
			    	 analyzer.tokenStream("content", new StringReader(doc.get("title")));
			    }catch(Exception e){
			     e.printStackTrace();
			    }
			   }
			  }
			  System.out.println("--------------------------------------");
			 }
		 	return result;
			}
	
		 public void printResult(Hits h){
		  if(h.length() == 0){
		   System.out.println("未发现结果.");
		  }else{
		   for(int i = 0; i < h.length(); i++){
		    try{
		     Document doc = h.doc(i);
		     TokenStream tokenStream =analyzer.tokenStream("content", new StringReader(doc.get("title")));
		    }catch(Exception e){
		     e.printStackTrace();
		    }
		   }
		  }
		  System.out.println("--------------------------------------");
		 }
		}
}

⌨️ 快捷键说明

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