lucene3.6查询TopDocs
来源:互联网 发布:easypusher linux 编辑:程序博客网 时间:2024/05/18 00:25
import java.io.File;
import java.io.IOException;
import org.apache.lucene.analysis.Analyzer;
import org.apache.lucene.document.Document;
import org.apache.lucene.index.IndexReader;
import org.apache.lucene.queryParser.MultiFieldQueryParser;
import org.apache.lucene.queryParser.ParseException;
import org.apache.lucene.queryParser.QueryParser;
import org.apache.lucene.search.IndexSearcher;
import org.apache.lucene.search.Query;
import org.apache.lucene.search.ScoreDoc;
import org.apache.lucene.search.TopDocs;
import org.apache.lucene.store.FSDirectory;
import org.apache.lucene.util.Version;
import org.wltea.analyzer.lucene.IKAnalyzer;
/**
*
*/
/**
* @author cyh
*
*/
public class IndexSearcherTest {
public static final Version VERSION_36 = Version.LUCENE_36;
public static Analyzer analyzer = new IKAnalyzer();
public static void search(String[] fields, String keyword) throws Exception {
/** 获取IndexSearcher */
IndexReader reader = IndexReader.open(FSDirectory
.open(new File("index")));
IndexSearcher searcher = new IndexSearcher(reader);
/** 搜索条件 */
// QueryParser parser = new QueryParser(VERSION_36, fields[0],
// analyzer);
QueryParser parser = new MultiFieldQueryParser(VERSION_36, fields,
analyzer);
Query query = parser.parse(keyword);
System.out.println("Searching for: " + query.toString());
TopDocs results = searcher.search(query, 5);
// TopDocs results = searcher.search(query, 5, sort);
ScoreDoc[] hits = results.scoreDocs;
System.out.println("results.totalHits:" + results.totalHits);
System.out.println("hits.length:" + hits.length);
// 高亮显示设置
// Formatter formatter = new SimpleHTMLFormatter("<b>","</b>");
// Highlighter highlighter = new Highlighter(formatter,new
// QueryScorer(query));
// highlighter.setTextFragmenter(new SimpleFragmenter(200));
for (ScoreDoc scoreDoc : hits) {
// 评分详情
// Explanation explanation = searcher.explain(query, scoreDoc.doc);
Document doc = searcher.doc(scoreDoc.doc);
System.out.println(scoreDoc.score + "\tid:" + doc.get("path"));
// System.out.println(scoreDoc.score + " " + doc.toString());
// TokenStream tokenStream = analyzer.tokenStream("token", new
// StringReader(doc.get(field)));
// System.out.println(highlighter.getBestFragment(tokenStream,doc.get(field)));
}
}
/**
* @param args
* @throws Exception
*/
public static void main(String[] args) throws Exception {
search(new String[] { "body" }, "hello");
}
}
- lucene3.6查询TopDocs
- Lucene3.6 之 查询篇
- Lucene3查询强化
- Lucene3查询强化
- lucene3.6
- lucene3.6分页、自定义查询的数据库实现
- LUCENE3.0 的二次查询
- Lucene3.6入门实例
- Lucene3.6 之 Filter
- Lucene3.6总结篇
- Lucene3.6小例子
- Lucene3.6 之 Filter
- lucene3.0学习——查询
- lucene3.6.0的查询条件分析
- 二、lucene3.5的查询语法
- lucene3.5建立索引和查询
- Lucene TopDocs类
- Lucene3.6demo小试
- 《如何阅读他人的程序代码》的阅读笔记
- linux 负载均衡 cpu迁移 cpu亲和性设置 之间的联系
- 树状数组
- 大整数除法
- java 内部类我们应该知道的的知识
- lucene3.6查询TopDocs
- jekyll 的一些函数和技巧
- zoj 2401 Zipper
- apache改变文档根路径后访问403的错误
- chrome 浏览手机网站
- Html结合CSS,让DIV始终在浏览器的最下面,不受其他环境影响!(纯示例)
- VC让对话框显示就最大化
- 逻辑相等与赋值语句
- ubuntu安装lamp