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