PHP如何调用搜索引擎接口

2019-03-27 01:06|来源: 网路

php如何实现调用搜索引擎接口;这里有两个方案;

一:PHP自带的curl,当然首先要开启curl,这里不多赘述。

代码如下:

$data = array( 
'q'=>$solrsel,
'wt'=>'json',
'indent'=>'true'
); 
 
$ch = curl_init(); //实例化
curl_setopt($ch, CURLOPT_HTTPHEADER, 0);//设置header编码格式
curl_setopt($ch, CURLOPT_URL, " http://115.28.140.107:8080/solr/medidoctor/select");//url地址
curl_setopt($ch, CURLOPT_POST, true);//是否post请求
curl_setopt($ch, CURLOPT_POSTFIELDS, $data);//post请求传递的数据,请求接口地址需要带的参数
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);//返回获取的输出文本流
$response = curl_exec($ch);//获取返回的数据,这里返回的是json数据可根据具体情况进行解析使用
curl_close($ch);//关闭
 
 
二:使用solr-php-client
首先:下载包我下载的是这个https://solr-php-client.googlecode.com/files/SolrPhpClient.r22.2009-11-09.zip
其次:将其解压,拷贝出来apache文件夹到你需求目录下。
然后以下代码进行使用:
header('Content-Type: text/html; charset=utf-8');//编码格式
 
$limit = 10;//取几条数据
$query = isset($_REQUEST['q']) ? $_REQUEST['q'] : false;//查询的关键字
$results = false;
if ($query)
{
 // The Apache Solr Client library should be on the include path
 // which is usually most easily accomplished by placing in the
 // same directory as this script ( . or current directory is a default
 // php include path entry in the php.ini)
 require_once('apache/solr/Service.php');
 // create a new solr service instance - host, port, and webapp
 // path (all defaults in this example)
 $solr = new Apache_Solr_Service('115.28.140.107', 8080, '/solr/medidoctor/');
 // if magic quotes is enabled then stripslashes will be needed
 if (get_magic_quotes_gpc() == 1)
 {
   $query = stripslashes($query);
 }
 
 // in production code you'll always want to use a try /catch for any
 // possible exceptions emitted  by searching (i.e. connection
 // problems or a query parsing error)
 try
 {
//以下为返回的解析方法,这里我将其解析存放到数组中然后jsonp的形式返回给html
  $re=array();
 $i=0;
     $results = $solr->search($query, 0, $limit);
     foreach ($results->response->docs as $doc)
     {
     $arr=array();
      foreach ($doc as $field => $value)
      {
      $arr[htmlspecialchars($field, ENT_NOQUOTES, 'utf-8')]=htmlspecialchars($value, ENT_NOQUOTES, 'utf-8');
      }
     $re[$i]=$arr;
     $i=$i+1;
     }
     
     
     $return=array(
"doclist"=>$re
);
echo $_GET['callback'].'('.json_encode($return).')'; 
       exit();
     
 }
 catch (Exception $e)
 {
   // in production you'd probably log or email this error to an admin
       // and then show a special message to the user but for this example
       // we're going to show the full exception
       die("<html><head><title>SEARCH EXCEPTION</title><body><pre>{$e->__toString()}</pre></body></html>");
 }
}

转自:http://www.cnblogs.com/momomisha/articles/3569043

相关问答

更多
  • “西林街”、“盘搜一下”这两个网盘搜索速度快,资源丰富,我所钟爱用的。
  • 全文搜索 MATCH() 函数 全文索引在 MySQL 中是一个 FULLTEXT 类型索引。FULLTEXT 索引用于 MyISAM 表,可以在 CREATE TABLE 时或之后使用 ALTER TABLE 或 CREATE INDEX 在 CHAR、VARCHAR 或 TEXT 列上创建。对于大的数据库,将数据装载到一个没有 FULLTEXT 索引的表中,然后再使用 ALTER TABLE (或 CREATE INDEX) 创建索引,这将是非常快的。将数据装载到一个已经有 FULLTEXT 索引的表中 ...
  • 首先要弄清楚是自己的站内检索,还是对网络的检索?如果仅仅检索自己本站里面的东西很简单,在apache上把lucene下载下来,里面有个很好的例子,再去找找相关资料就行了,如果想对中文分词做好点,去看看庖丁分词法.
  • 1、首先,到域名查询中心,比如万网、新网或者能查询域名所有者的地方去查询域名的注册信息,是否以前被注册过(就是我们常用的Whois查询)。如果域名曾经被注册过,我们就需要关心一下这个域名是否有过不良记录。 2、通过在Google中(site:域名),看下是否有记录,然后查看下反向链接,利用(link:域名)或者(domain:域名)可以到一些提供查询反向连接的网站去查询或者自己到搜索引擎利用命令查询。如果存在反向连接,而没有该站点被搜索引擎收录,那么这个域名很有可能被K过了,也就是存在不良记录。 3、直接输 ...
  • 在浩如烟海的Internet上,特别是其上的Web(World Wide Web万维网)上,不会搜索,就不会上网。网虫朋友们,你了解搜索引擎吗?它们是怎么工作的?你都使用哪些搜索引擎?今天我就和大家聊聊搜索引擎的话题。 一、搜索引擎的分类 获得网站网页资料,能够建立数据库并提供查询的系统,我们都可以把它叫做搜索引擎。按照工作原理的不同,可以把它们分为两个基本类别:全文搜索引擎(FullText Search Engine)和分类目录Directory)。 全文搜索引擎的数据库是依靠一个叫“网络机器人(Spi ...
  • 这方面的书还是比较多的,我所看过的有《搜索引擎技术》、《个性化搜索引擎原理与技术》、《搜索引擎原理、实践与应用》。此外还有很多基于开源软件如Lucene、nutch的开发搜索引擎的书籍,其中也介绍了不少关于原理方面的东西,而且更加面向应用。
  • 全文搜索 MATCH() 函数 全文索引在 MySQL 中是一个 FULLTEXT 类型索引。FULLTEXT 索引用于 MyISAM 表,可以在 CREATE TABLE 时或之后使用 ALTER TABLE 或 CREATE INDEX 在 CHAR、VARCHAR 或 TEXT 列上创建。对于大的数据库,将数据装载到一个没有 FULLTEXT 索引的表中,然后再使用 ALTER TABLE (或 CREATE INDEX) 创建索引,这将是非常快的。将数据装载到一个已经有 FULLTEXT 索引的表中 ...
  • lucene的效率没有问题,你可以100W条记录的索引放在一台机器上,用nutch分开检索的算法,或者用hadoop存储索引,自己写一个indexsearcher,但是需要注意各个机器上的结果是本地最优不是全局最优的结果,如果想全局最优的结果还得采用全局频率计数(Nutch现在有没有我不清楚),或者放开各个机器返回结果的数量,从算法理论的角度上最大可能的获得最优解。100W记录的响应我测试过,应该可以满足要求。等你遇到什么问题,可以再联系,lucene后面的基准测试你也可以看看。 老吴
  • http://baike.baidu.com/view/371811.htm lucene是一款开源的搜索引擎工具,你可以用这个!
  • 这是Spider名称的搜索引擎目录 然后你使用$_SERVER['HTTP_USER_AGENT']; 检查代理人是否说蜘蛛。 if(strstr(strtolower($_SERVER['HTTP_USER_AGENT']), "googlebot")) { // what to do } Here's a Search Engine Directory of Spider names Then you use $_SERVER['HTTP_USER_AGENT']; to check if t ...