一种独立搜索的ApacheLucene评分高亮方法技术

技术编号:15792089 阅读:74 留言:0更新日期:2017-07-09 23:17
本发明专利技术公开了一种独立搜索的ApacheLucene评分高亮方法;其特征在于:该方法如下:数据接收,高亮服务接收客户端通过http协议传输过来的搜索语句参数;数据转化,将步骤1接收搜索语句参数转成Apache Lucene的Query对象;数据预处理,初始化Apache Lucene的评分器(QueryScorer)以及初始化高亮器(Highlighter);通过评分器(QueryScorer)对Query对象进行评分和分词,得到Query的词组,对需要做高亮的文本进行分词器分词,得到文本词;数据处理,遍历文本分词后的结果,与通过评分器(QueryScorer)评分后的Query分词结果进行一一匹配;数据输出,通过步骤4的匹配,如果能匹配上,则加上高亮标记,否则返回原始内容。

【技术实现步骤摘要】
一种独立搜索的ApacheLucene评分高亮方法
本专利技术涉及网络搜索
,确切地说是一种独立搜索的ApacheLucene评分高亮方法。
技术介绍
在当今基于ApacheLucene实现的搜索引擎如:ApacheSolr、ElasticSearch等中,高亮与搜索都是捆绑在一起使用的,因为高亮需要文档的原始内容;但是在亿级数据量的大数据生产环境中,原始内容存储会带来磁盘IO性能瓶颈,以及主备节点数据同步慢的性能问题;本专利技术提供了一种方法,将搜索与高亮分开,既搜索服务只索引不存储原始内容;高亮服务单独部署;这样既可以提升搜索性能,也可以提升高亮的性能以及可扩展性。
技术实现思路
本专利技术要解决的技术问题是将搜索与高亮分开,既搜索服务只索引不存储原始内容;高亮服务单独部署;这样既可以提升搜索性能,也可以提升高亮的性能以及可扩展性。为解决上述技术问题,本专利技术采用如下技术手段:一种独立搜索的ApacheLucene评分高亮方法;其特征在于:该方法包括如下步骤:步骤1:数据接收,高亮服务接收客户端通过http协议传输过来的搜索语句参数;步骤2:数据转化,将步骤1接收搜索语句参数转成ApacheLucene的Query对象;步骤3:数据预处理,初始化ApacheLucene的评分器(QueryScorer)以及初始化高亮器(Highlighter);通过评分器(QueryScorer)对Query对象进行评分和分词,得到Query的词组,对需要做高亮的文本进行分词器分词,得到文本词;步骤4:数据处理,遍历文本分词后的结果,与通过评分器(QueryScorer)评分后的Query分词结果进行一一匹配;步骤5:数据输出,通过步骤4的匹配,如果能匹配上,则加上高亮标记,否则返回原始内容。作为优选,本专利技术更进一步的技术方案是:所述的数据转化,编写HighlightHandler类,继承ApacheSolr的RequestHandlerBase抽象类以及实现SolrCoreAware、PluginInfoInitialized接口;然后重写handleRequestBody方法,接着调用QParser的getParser方法得到QParser将搜索语句转成ApacheLucene的Query对象。所述的数据预处理,newQueryScorer且构造函数传入Query参数,newHighlighter构造函数传入QueryScorer。所述的数据输出,调用Highlighter的getBestFragment方法传入分词器以及需要高亮的文本,得到高亮后的文本。所述的数据接收之前需要先单独部署一套ApacheSolr集群,不存储数据,专门用来做高亮。所述的ApacheLucene评分机制且独立于搜索的高亮方法可安插插件,插件为在solrconfig.xml中配置<requestHandler>,class的HighlightHandler。本专利技术主要解决了ApacheSolr在亿级数据量的大数据生成环境中,存在的搜索与高亮性能问题。搜索服务与高亮服务独立分开部署,这样可以使得功能的可扩展性大大提升;同时搜索服务不需要存储原始内容,也极大的提升了搜索性能(因为索引文件变小了,磁盘IO开销减小);同时高亮服务可以单独的做高亮,不需要关心搜索,而且高亮服务可以横向扩展增强并发量。附图说明图1为本专利技术的一种独立搜索的ApacheLucene评分高亮方法流程图。图2为本专利技术的一种独立搜索的ApacheLucene评分高亮方法结构框图。具体实施方式下面结合实施例,进一步说明本专利技术。具体实施例1:参见图1、2可知,本专利技术通过:1、高亮服务接收客户端通过http协议传输过来的搜索语句参数;2、将搜索语句参数转成ApacheLucene的Query对象;3、创建ApacheLucene的评分器(QueryScorer)以及高亮器(Highlighter);4、通过评分器(QueryScorer)对Query对象进行评分和分词;5、对需要做高亮的文本进行分词器分词;6、遍历文本分词后的结果,与通过评分器(QueryScorer)评分后的Query分词结果进行一一匹配;如果能匹配上,则加上高亮标记,否则返回原始内容。具体实施例2:本专利技术1、单独部署一套ApacheSolr集群,不存储数据,专门用来做高亮。2、编写HighlightHandler类,继承ApacheSolr的RequestHandlerBase抽象类以及实现SolrCoreAware、PluginInfoInitialized接口;然后重写handleRequestBody方法,接着调用QParser的getParser方法得到QParser将搜索语句转成ApacheLucene的Query对象;接着newQueryScorer且构造函数传入Query参数,newHighlighter构造函数传入QueryScorer,最后调用Highlighter的getBestFragment方法传入分词器以及需要高亮的文本,得到高亮后的文本。这样不需要索引信息不需要与磁盘交互,可以避免因磁盘IO带来的性能瓶颈。3、在solrconfig.xml中配置<requestHandler>class为HighlightHandler,这种插拔式的配置非常灵活,且可扩展性强。由于以上所述仅为本专利技术的具体实施方式,但本专利技术的保护不限于此,任何本
的技术人员所能想到本技术方案技术特征的等同的变化或替代,都涵盖在本专利技术的保护范围之内。本文档来自技高网
...
一种独立搜索的ApacheLucene评分高亮方法

【技术保护点】
一种独立搜索的ApacheLucene评分高亮方法;其特征在于:该方法包括如下步骤:步骤1:数据接收,高亮服务接收客户端通过http协议传输过来的搜索语句参数;步骤2:数据转化,将步骤1接收搜索语句参数转成Apache Lucene的Query对象;步骤3:数据预处理,初始化Apache Lucene的评分器(QueryScorer)以及初始化高亮器(Highlighter);通过评分器(QueryScorer)对Query对象进行评分和分词,得到Query的词组,对需要做高亮的文本进行分词器分词,得到文本词;步骤4:数据处理,遍历文本分词后的结果,与通过评分器(QueryScorer)评分后的Query分词结果进行一一匹配;步骤5:数据输出,通过步骤4的匹配,如果能匹配上,则加上高亮标记,否则返回原始内容。

【技术特征摘要】
1.一种独立搜索的ApacheLucene评分高亮方法;其特征在于:该方法包括如下步骤:步骤1:数据接收,高亮服务接收客户端通过http协议传输过来的搜索语句参数;步骤2:数据转化,将步骤1接收搜索语句参数转成ApacheLucene的Query对象;步骤3:数据预处理,初始化ApacheLucene的评分器(QueryScorer)以及初始化高亮器(Highlighter);通过评分器(QueryScorer)对Query对象进行评分和分词,得到Query的词组,对需要做高亮的文本进行分词器分词,得到文本词;步骤4:数据处理,遍历文本分词后的结果,与通过评分器(QueryScorer)评分后的Query分词结果进行一一匹配;步骤5:数据输出,通过步骤4的匹配,如果能匹配上,则加上高亮标记,否则返回原始内容。2.根据权利要求1所述的一种独立搜索的ApacheLucene评分高亮方法;其特征在于:所述的数据转化,编写HighlightHandler类,继承ApacheSolr的RequestHandlerBase抽象类以及实现SolrCoreAware、PluginInfoInitialized接口;然后重写h...

【专利技术属性】
技术研发人员:何小成黄三伟
申请(专利权)人:湖南蚁坊软件股份有限公司
类型:发明
国别省市:湖南,43

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1