• PHP-从零开始使用Solr搜索引擎服务(下)


    前面在配置完成Solr服务之后,在浏览器上可以打开Solr的管理界面,这个界面几乎包含了Solr的所有功能,如何反应到我们的PHP里边呢?很多人或许查到需要再安装一个php-solr-client,用于php和java的solr服务器通信,研究了半天没弄明白怎么做,反正是很麻烦而且似乎很多余。

    1:思路:

    注意看Solr的管理界面上,你或许有以下发现。

    上面框框中有一个url地址,把这个地址复制,然后放在浏览器的地址栏,果然如所想一样,返回了结果集。市面上有很多Solr教程,厚厚的一本书,里边讲解肯定很全面,我们没时间看,怎么能最快解决问题就怎么做。

    只要浏览器上能出结果,很自然就想到,Solr这是对外公开了一套api嘛,我们完全可以用php的curl做到这一点,浏览器能做到的,curl肯定也可以。

    这里写了一个简单的CURL请求方法

    复制代码
        private  function getCurl($url){
            $curl = curl_init();
            curl_setopt($curl, CURLOPT_URL,$url);
            curl_setopt($curl, CURLOPT_HEADER, 0);
            curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
            $data = curl_exec($curl) ;
            curl_close($curl);
            return json_decode($data,true);
        }
    复制代码

    实验一下,和预期的结果完全一样,所以下面我们就用这个思路去对接php和solr。

    2:使用PHP操作Solr查询

    对应Solr管理界面上的Query栏目下,我们要搞清楚这些字段的意义,然后就能用php操作整个搜索过程了

    图中q、fq、sort、fl、df等,这些字段都是搜索用的字段,我们只要搞清楚这些字段意义就可以写php代码了。

    字段的意义网上有很多,这个链接都有介绍了

    http://blog.csdn.net/zmken497300/article/details/52817825

    3:使用PHP操作Solr建立索引
    搜索已经有思路去解决了,还有一个关键的问题要解决,Solr是对关联的数据库建立索引,再对索引进行搜索
    。很显然数据库任何时间都会变更,所以要让Solr能不间断的重建索引才能搜索到最新的结果集。
    管理界面中有一个Dataimport选项,点开可以手动重建索引,我们没有看到类似Query上的查询有一个
    URL,我们很希望有这一个东西,这样就能用curl,程序自动重建索引。
    按照前面的思路,我们有理由相信,Solr肯定已经有这样的api。
    把浏览器设置调试模式

    当我点下Execute按钮的时候,看到下面网络请求果然发出了一条url,复制这个url到浏览器,和想象的一样,自动重建了索引并返回了结果打印到浏览器上。

    到此为止,已经基本都解决了PHP操作Solr的技术问题,可以预见,完成一个简单的搜索功能,不会再出现技术问题了吧。

    下面附上一段PHP代码,操作Solr

     View Code

    search方法就是用来发起CURL的搜索命令,当然在这之前,你需要使用其他方法设置你的查询条件什么的。

    index方法就是用来发起CURL的重建索引命令,把这个方法放在crontab 定时任务里,就可以定时重建索引,我这里是全量重建索引,如果你的数据量很大,对新内容的搜索时效性也要求很高,那么可以使用增量索引,怎么做呢?看下管理界面,操作一下,然后调试模式抓取发出的请求连接,简单吧。

    结束:

    至此,就可以完成一个企业级的搜索服务了,下面贴上我给前端写的一个搜索接口,仅供参考!

     View Code

    然后附上一个简单粗糙的demo页面

  • 相关阅读:
    [模板]LCA
    洛谷 P1103 书本整理(动规)
    [模板]KMP字符串匹配
    [模板]优先队列(堆)
    Java面试题10(如何取到set集合的第一个元素)
    Java集合操作类Collections的一些常用方法
    本机不装Oracle,使用plsql连接远程Oracle的方法
    ORACLE配置tnsnames.ora文件实例
    JS正则表达式验证数字
    diea破解
  • 原文地址:https://www.cnblogs.com/microtiger/p/9012420.html
Copyright © 2020-2023  润新知