`
chuxu000
  • 浏览: 4264 次
  • 性别: Icon_minigender_1
  • 来自: 北京
最近访客 更多访客>>
文章分类
社区版块
存档分类
最新评论

lucene 2.4高亮显示成功了!但是为什么只能在一个域搜索?其他域的关键字没高亮?

阅读更多
lucene 2.4高亮显示成功了!但是为什么只能在一个域搜索?其他域的关键字没高亮?我在DOCNAME域搜索高亮显示但为什么DOCAUTHOR没高亮呢?各位有什么看法啊?[img][/img]


package com.wcb.lucene.impl;

/**
* wcb
*/
import java.io.IOException;
import java.io.StringReader;
import java.util.ArrayList;

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

import org.apache.lucene.analysis.TokenStream;
import org.apache.lucene.analysis.standard.StandardAnalyzer;
import org.apache.lucene.document.Document;
import org.apache.lucene.document.Field;
import org.apache.lucene.document.Field.Index;
import org.apache.lucene.document.Field.Store;
import org.apache.lucene.index.CorruptIndexException;
import org.apache.lucene.queryParser.QueryParser;
import org.apache.lucene.search.BooleanQuery;
import org.apache.lucene.search.Hits;
import org.apache.lucene.search.IndexSearcher;
import org.apache.lucene.search.Query;
import org.apache.lucene.search.BooleanClause.Occur;
import org.apache.lucene.search.highlight.Highlighter;
import org.apache.lucene.search.highlight.QueryScorer;
import org.apache.lucene.search.highlight.SimpleFragmenter;
import org.apache.lucene.search.highlight.SimpleHTMLFormatter;

import com.wcb.lucene.model.DocBean;

public class IndexSearch_wcb {

// public static void main(String[] a) throws Exception {
// System.out.println((new IndexSearch_wcb().Search("��")).size());
// }

public ArrayList Search(String keyword) throws Exception {
ArrayList result = new ArrayList();
try {

IndexSearcher searcher = new IndexSearcher(CreateIndex.IndexDir);
BooleanQuery mainQuery = new BooleanQuery();
StandardAnalyzer standeranalyzer = new StandardAnalyzer();

QueryParser authorParser = new QueryParser("DOCAUTHOR",
standeranalyzer);
QueryParser docnameParser = new QueryParser("DOCNAME",
standeranalyzer);

Query authorQuery = authorParser.parse(keyword);
Query docnameQuery = docnameParser.parse(keyword);

mainQuery.add(docnameQuery, Occur.SHOULD);
mainQuery.add(authorQuery, Occur.SHOULD);

Hits hits = searcher.search(mainQuery);
////////////////////////////////////////////准备
Highlighter highlighter = null;
SimpleHTMLFormatter simpleHTMLFormatter = new SimpleHTMLFormatter("<b><font color='green'>", "</font></b>");  
highlighter = new Highlighter(simpleHTMLFormatter,new QueryScorer(mainQuery));     
highlighter.setTextFragmenter(new SimpleFragmenter(100));

            if(hits.length()>0){
           
for (int i = 0; i < hits.length(); i++) {
Document doc = hits.doc(i);
/////////////////高亮的分析
// TokenStream tokenStream = luceneAnalyzer.tokenStream("contents", new StringReader(hits.doc.get("contents")));
TokenStream tokenStream =standeranalyzer.tokenStream("token", new StringReader(doc.get("DOCNAME")));
//TokenStream tokenStream2 =standeranalyzer.tokenStream("token2", new StringReader(doc.get("DOCAUTHOR")));
/////////////////////////
System.out.print(doc.getField("DOCAUTHOR").stringValue()+"\t");
System.out.print(doc.getField("DOCNAME").stringValue()+"\t");
System.out.print(doc.getField("DOCUPTIME").stringValue()+"\t");
System.out.println(doc.getField("DOCID").stringValue());
DocBean docbean = new DocBean();
    docbean.setDocId(Integer.parseInt(doc.getField("DOCID").stringValue()));
   
   //docbean.setDocAuthor(highlighter.getBestFragment(tokenStream,doc.get("DOCAUTHOR")));
    docbean.setDocAuthor(doc.getField("DOCAUTHOR").stringValue());
   
    docbean.setDocName(highlighter.getBestFragment(tokenStream,doc.get("DOCNAME")));
docbean.setDocUp_time(doc.getField("DOCUPTIME").stringValue());


result.add(docbean);

}
            }
} catch (Exception e) {
e.printStackTrace();
}
return result;
}

}

关键字:小吴
小吴:小吴的sdf :16 :2009-11-13
小吴:小吴hgjk :25 :2009-11-13
小吴:小吴gf文章 :19 :2009-11-13
xiaowu小吴:小吴的hjk :24 :2009-11-13
xiaowu小吴:小吴jk文章 :22 :2009-11-13
小吴: :1 :2009-05-11
小吴:小hfg的文章 :20 :2009-11-13
xiaowu:小吴sdf :15 :2009-11-13


分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics