/**
*
* @author Q.Wong [2010-12-17]
*
*/
public class QueryManager {
private static Logger logger = LogManager.getLogger(QueryManager.class);
/**
* 执行查询
*
* @param analyzer
* @param searcher
* @param field
* @param keyWord
* @param n
* @return
* @throws ParseException
* @throws IOException
*/
public static TopDocs doQuery(Analyzer analyzer, Searcher searcher,
String field, String keyWord, int n) throws ParseException,
IOException {
QueryParser parser = new QueryParser(Version.LUCENE_30, field, analyzer);
Query query = parser.parse(keyWord);
TopDocs hits = searcher.search(query, n);
return hits;
}
/**
* 处理查询返回的结果
*
* @param hits
* @param searcher
* @throws CorruptIndexException
* @throws IOException
*/
public static void resolvedResults(TopDocs hits, Searcher searcher)
throws CorruptIndexException, IOException {
ScoreDoc[] scoreDocs = hits.scoreDocs;
for (ScoreDoc scoreDoc : scoreDocs) {
Document doc = searcher.doc(scoreDoc.doc);
logger.info(doc.getField("path") + " " + scoreDoc.toString()
+ " ");
}
}
/**
* 执行查询并处理查询结果
* 高亮关键字
*
* @param analyzer
* @param reader
* @param fieldName
* @param keyWord
* @param n
* @throws ParseException
* @throws IOException
* @throws InvalidTokenOffsetsException
*/
public static void doQuery(Analyzer analyzer, IndexReader reader,
String fieldName, String keyWord, int n) throws ParseException,
IOException, InvalidTokenOffsetsException {
QueryParser parser = new QueryParser(Version.LUCENE_30, fieldName,
analyzer);
Query query = parser.parse(keyWord);
Searcher searcher = new IndexSearcher(reader);
TopDocs hits = searcher.search(query, n);
Highlighter highlighter = new Highlighter(new Formatter() {
@Override
public String highlightTerm(String originalText, TokenGroup group) {
if (group.getTotalScore() <= 0) {
return originalText;
}
return "【" + originalText + "】";
}
}, new QueryScorer(query));
int maxNumFragmentsRequired = 5;
String fragmentSeparator = "...";
ScoreDoc[] scoreDocs = hits.scoreDocs;
for (ScoreDoc scoreDoc : scoreDocs) {
int docId = scoreDoc.doc;
Document doc = searcher.doc(docId);
String text = doc.get(fieldName);
TermPositionVector tpv = (TermPositionVector) reader
.getTermFreqVector(docId, fieldName);
System.out.println(tpv.size());
TokenStream tokenStream = TokenSources.getTokenStream(tpv);
String result = highlighter.getBestFragments(tokenStream, text,
maxNumFragmentsRequired, fragmentSeparator);
System.out.println(result);
}
}
}
分享到:
相关推荐
TAC顶刊报告:'多智能体分布式自适应一致性控制(含纯一致性与leader-follower一致性)'及其Matlab复现代码.pdf
SVPWM仿真与基于DSP28335的PIL(处理器在环)仿真模型验证算法可行性与实时性的实践研究.pdf
VSG仿真、并网与离网运行仿真、预同期并网控制及虚拟同步机逆变器仿真.pdf
SSA-RF与RF神经网络多元回归预测(Matlab 程序及运行指南).pdf
Simulink微网多逆变器下垂控制仿真模型:固定与可调的下垂系数、SVPWM与算法控制的并联运行.pdf
电磁场与电磁波28
SSA-CNN-LSTM时间序列预测(Matlab)_ 麻雀算法优化卷积长短期记忆网络.pdf
C++知识点汇总.md.zip
T型逆变器仿真(SPWM)Matlab 2021a:LCL滤波器下纯阻性负载的五电平波形仿真.pdf
STM32G431 FOC线性磁链观测器无感FOC驱动资料(非VESC、非ST电机库生成,支持直接零速闭环启动及电位器转速控制)”.pdf
STM32F103 SAE CAN开放协议源码(含半年咨询费+中文注释及原理说明).pdf
Java项目springboot基于springboot的课程设计,包含源码+数据库+毕业论文
Simulink导弹制导系统仿真模型文件使用指南及视频讲解.pdf
内容概要:本文深入介绍了Caffe深度学习框架,涵盖其历史背景和发展、安装配置、卷积神经网络(CNN)的基础理论及其实现。具体内容包括CNN各个层级的工作原理、Caffe中的网络模型定义和训练方法、LeNet与AlexNet的实际运用、迁移学习及模型的性能优化等。通过详细的实战操作演示,文章帮助开发者掌握在Caffe上搭建CNN的方法和技术。 适合人群:从事计算机视觉领域的研究人员和工程师,尤其是想要深入了解卷积神经网络和掌握Caffe框架的人群。 使用场景及目标:本文适合作为学习材料用于理解卷积神经网络的概念和工作机制,指导初学者和有经验的开发者如何利用Caffe实现图像识别、目标检测等任务;并且帮助读者掌握模型训练和性能优化的相关技能。 其他说明:文中提供了大量代码片段与实例讲解,方便读者理解和实践;此外还对比了几款主流深度学习框架的优势,辅助决策选用合适的开发工具。
1、文件说明: Centos8操作系统vim-editorconfig-1.1.1-1.el8.rpm以及相关依赖,全打包为一个tar.gz压缩包 2、安装指令: #Step1、解压 tar -zxvf vim-editorconfig-1.1.1-1.el8.tar.gz #Step2、进入解压后的目录,执行安装 sudo rpm -ivh *.rpm
VMD信号分解算法:VMD功率分解与滚动轴承故障检测.pdf
STM32 IAP固件升级程序源代码(串口环形队列接收模式实现固件升级程序).pdf
VSC直流输电仿真案例:两电平结构换流站与双环控制的应用.pdf
STM32高压无感FOC全功能版本:风机控制与独特处理方式.pdf
STM32单片机指纹密码锁仿真:键盘解锁、指纹识别及多功能安全控制程序.pdf