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;
}

}

关键字:小吴
小吴:[b]小吴[/b]的sdf :16 :2009-11-13
小吴:[b]小吴[/b]hgjk :25 :2009-11-13
小吴:[b]小吴[/b]gf文章 :19 :2009-11-13
xiaowu小吴:[b]小吴[/b]的hjk :24 :2009-11-13
xiaowu小吴:[b]小吴[/b]jk文章 :22 :2009-11-13
小吴: :1 :2009-05-11
小吴:小hfg的文章 :20 :2009-11-13
xiaowu:[b]小吴[/b]sdf :15 :2009-11-13
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值