一种解决ApacheSolr短语搜索不准的方法技术

技术编号:15792088 阅读:86 留言:0更新日期:2017-07-09 23:17
本发明专利技术公开了一种解决ApacheSolr短语搜索不准的方法;其特征在于:该方法包括如下步骤:数据接收,QParserPlugin接收客户端通过http协议传输过来的搜索语句参数;短语查找,在QParserPlugin中使用正则表达式匹配搜索语句参数中的短语,得到短语集合;数据分词和替换,通过步骤2得到的短语集合中的短语进行索引模式分词;将分好词的短语替换原始搜索语句中的短语;数据转换,通过Apache Solr的语法解析器将替换过的搜索语句转成Query;数据处理和输出,进入Apache Solr的搜索过程,完成后输出数据。本发明专利技术采用插件的方式扩展Apache Solr的语法解析器,重写其语法解析规则,解决了短语搜索不准的问题。设置了可插拔式的语法解析器扩展插件;采用索引模式对短语进行索引模式分词后再搜索。

【技术实现步骤摘要】
一种解决ApacheSolr短语搜索不准的方法
本专利技术涉及网络搜索
,确切地说是一种解决ApacheSolr短语搜索不准的方法。
技术介绍
ApacheSolr中有一种搜索语法叫“短语搜索”既PhraseQuery;短语搜索的语法为在关键词上加上引号,搜索原理是引号内的关键词分词后距离为指定的slop参数大小;但是在建索引时文档分词的结果会比搜索时对Query分词的结果更多,故会造成索引模式与搜索模式不匹配,从而导致“短语搜索”不准确问题。本专利技术提供了一种方法,在进入ApacheSolr搜索操作之前,先将短语搜索语法中的关键词按照索引模式分词,然后替换原始的的短语搜索语句,最后进入搜索操作。
技术实现思路
本专利技术要解决的技术问题是ApacheSolr在短语搜索时,因索引模式与搜索模式分词结果不一致从而导致搜索不准确的问题。为解决上述技术问题,本专利技术采用如下技术手段:一种解决ApacheSolr短语搜索不准的方法;其特征在于:该方法包括如下步骤:步骤1:数据接收,QParserPlugin接收客户端通过http协议传输过来的搜索语句参数;步骤2:短语查找,在QParserPlugin中使用正则表达式匹配搜索语句参数中的短语,得到短语集合;步骤3:数据分词和替换,通过步骤2得到的短语集合中的短语进行索引模式分词;将分好词的短语替换原始搜索语句中的短语;步骤4:数据转换,通过ApacheSolr的语法解析器将替换过的搜索语句转成Query;步骤5:数据处理和输出,进入ApacheSolr的搜索过程,完成后输出数据。作为优选,本专利技术更进一步的技术方案是:所述的短语查找,在parse方法中首先调用getString方法得到搜索语句,然后使用匹配“加引号语句”的正则表达式去匹配搜索语句中的“短语搜索语句”。所述的数据分词和替换,调用分词器按索引模式对匹配出来的短语分词,最后将分词后的语句替换原始的搜索语句。所述的数据转换ApacheSolr的语法解析器,编写AntfactQParserPlugin类,且继承ApacheSolr的QParserPlugin并重写createParser方法,返回值为AntfactQParser类型。所述的数据转换ApacheSolr的语法解析器最后转换数据为solrconfig.xml配置文件中配置<queryParser>,class为AntfactQParserPlugin;这样可以动态灵活的配置自定义的queryParser。本专利技术采用插件的方式扩展ApacheSolr的语法解析器,重写其语法解析规则,解决了短语搜索不准的问题。设置了可插拔式的语法解析器扩展插件;采用索引模式对短语进行索引模式分词后再搜索。一、编写AntfactQParser类,且继承ApacheSolr的LuceneQParser类并重写parse方法;在parse方法中首先调用getString方法得到搜索语句,然后使用匹配“加引号语句”的正则表达式去匹配搜索语句中的“短语搜索语句”,然后调用分词器按索引模式对匹配出来的短语分词,最后将分词后的语句替换原始的搜索语句;这样既不影响原来ApacheSolr的LuceneQParser的功能,又可以根据需求自定义语法解析规则;二、编写AntfactQParserPlugin类,且继承ApacheSolr的QParserPlugin并重写createParser方法,返回值为AntfactQParser类型;最后在solrconfig.xml配置文件中配置<queryParser>,class为AntfactQParserPlugin;这样可以动态灵活的配置自定义的queryParser。附图说明图1为本专利技术的一种解决ApacheSolr短语搜索不准的方法流程图。图2为本专利技术的一种解决ApacheSolr短语搜索不准的方法结构框图。具体实施方式下面结合实施例,进一步说明本专利技术。具体实施例1:参见图1、图2可知,本专利技术一种解决ApacheSolr短语搜索不准的方法;其特征在于:该方法包括如下步骤:步骤1:数据接收,QParserPlugin接收客户端通过http协议传输过来的搜索语句参数;步骤2:短语查找,在QParserPlugin中使用正则表达式匹配搜索语句参数中的短语,得到短语集合;在parse方法中首先调用getString方法得到搜索语句,然后使用匹配“加引号语句”的正则表达式去匹配搜索语句中的“短语搜索语句”,步骤3:数据分词和替换,通过步骤2得到的短语集合中的短语进行索引模式分词;将分好词的短语替换原始搜索语句中的短语;调用分词器按索引模式对匹配出来的短语分词,最后将分词后的语句替换原始的搜索语句,步骤4:数据转换,通过ApacheSolr的语法解析器将替换过的搜索语句转成Query;数据转换ApacheSolr的语法解析器,编写AntfactQParserPlugin类,且继承ApacheSolr的QParserPlugin并重写createParser方法,返回值为AntfactQParser类型,数据转换ApacheSolr的语法解析器最后转换数据为solrconfig.xml配置文件中配置<queryParser>,class为AntfactQParserPlugin;这样可以动态灵活的配置自定义的queryParser,步骤5:数据处理和输出,进入ApacheSolr的搜索过程,完成后输出数据。具体实施例2:1、第一步,QParserPlugin接收客户端通过http协议传输过来的搜索语句参数;2、第二步,在QParserPlugin中使用正则表达式匹配搜索语句参数中的短语,得到短语集合;3、第三步,遍历短语集合中的短语进行索引模式分词;4、第四步,将分好词的短语替换原始搜索语句中的短语;5、第五步,ApacheSolr的语法解析器将替换过的搜索语句转成Query。6、第六步,进入ApacheSolr的搜索过程;由于以上所述仅为本专利技术的具体实施方式,但本专利技术的保护不限于此,任何本
的技术人员所能想到本技术方案技术特征的等同的变化或替代,都涵盖在本专利技术的保护范围之内。本文档来自技高网
...
一种解决ApacheSolr短语搜索不准的方法

【技术保护点】
一种解决ApacheSolr短语搜索不准的方法;其特征在于:该方法包括如下步骤:步骤1:数据接收,QParserPlugin接收客户端通过http协议传输过来的搜索语句参数;步骤2:短语查找,在QParserPlugin中使用正则表达式匹配搜索语句参数中的短语,得到短语集合;步骤3:数据分词和替换,通过步骤2得到的短语集合中的短语进行索引模式分词;将分好词的短语替换原始搜索语句中的短语;步骤4:数据转换,通过Apache Solr的语法解析器将替换过的搜索语句转成Query;步骤5:数据处理和输出,进入Apache Solr的搜索过程,完成后输出数据。

【技术特征摘要】
1.一种解决ApacheSolr短语搜索不准的方法;其特征在于:该方法包括如下步骤:步骤1:数据接收,QParserPlugin接收客户端通过http协议传输过来的搜索语句参数;步骤2:短语查找,在QParserPlugin中使用正则表达式匹配搜索语句参数中的短语,得到短语集合;步骤3:数据分词和替换,通过步骤2得到的短语集合中的短语进行索引模式分词;将分好词的短语替换原始搜索语句中的短语;步骤4:数据转换,通过ApacheSolr的语法解析器将替换过的搜索语句转成Query;步骤5:数据处理和输出,进入ApacheSolr的搜索过程,完成后输出数据。2.根据权利要求1所述的一种解决ApacheSolr短语搜索不准的方法;其特征在于:所述的短语查找,在parse方法中首先调用getString方法得到搜索语句,然后使用匹配“加引号语句”的正则表达式去匹配搜索语句中的“短语搜索语句”。3.根据权利要求1所述的一种解决ApacheSolr短语搜索不准的方法;其特征在于:所述的数据分词和替换,调用分词器按索引模式对匹配出来的短语分...

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

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

1