一种解决ApacheSolr短语搜索不准的方法与流程

文档序号:12825027阅读:851来源:国知局
一种解决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短语搜索不准的方法;其特征在于:该方法包括如下步骤:数据接收,QParserPlugin接收客户端通过http协议传输过来的搜索语句参数;短语查找,在QParserPlugin中使用正则表达式匹配搜索语句参数中的短语,得到短语集合;数据分词和替换,通过步骤2得到的短语集合中的短语进行索引模式分词;将分好词的短语替换原始搜索语句中的短语;数据转换,通过Apache Solr的语法解析器将替换过的搜索语句转成Query;数据处理和输出,进入Apache Solr的搜索过程,完成后输出数据。本发明采用插件的方式扩展Apache Solr的语法解析器,重写其语法解析规则,解决了短语搜索不准的问题。设置了可插拔式的语法解析器扩展插件;采用索引模式对短语进行索引模式分词后再搜索。

技术研发人员:何小成;黄三伟
受保护的技术使用者:湖南蚁坊软件股份有限公司
技术研发日:2017.03.01
技术公布日:2017.07.07
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1