[关闭]
@a5635268 2016-02-15T18:27:14.000000Z 字数 4876 阅读 1131

solr

PHP solr


基础命令

获得命令选项与帮助

  1. cd /usr/local/solr/solr
  2. # 获得命令option
  3. ./bin/solr
  4. # 获得option的帮助
  5. ./bin/solr start -help

常用命令

  1. # 启动服务(安装后默认启动的,默认是8983)
  2. ./solr start -p 8984
  3. # 关闭服务
  4. ./solr stop -p 8984
  5. # 创建集合
  6. /usr/local/solr/solr/bin/solr create -c core1
  7. # 或者通过solr用户的身份创建
  8. su - solr -c "/usr/local/solr/solr/bin/solr create -c core1"

导入全量mysql

注意新版被solr本身就是一个单独的服务器,不需要另外依靠其他服务器;

  1. 去solr的控制台获得当前core的实例路径instanceDir
  2. 编辑 {$instanceDir}/conf/solrconfig.xml
  1. # 新增如下内容
  2. <requestHandler name="/dataimport" class="org.apache.solr.handler.dataimport.DataImportHandler">
  3. <lst name="defaults">
  4. <str name="config">data-config.xml</str>
  5. </lst>
  6. </requestHandler>

3 .新建 {$instanceDir}/conf/data-config.xml,编辑如下内容

  1. <dataConfig>
  2. <dataSource type="JdbcDataSource" driver="com.mysql.jdbc.Driver" url="jdbc:mysql://localhost/database_name" user="userName" password="passWord"/>
  3. <document>
  4. <entity name="check_lawyer" query="select id, name from tableName">
  5. <field column="id" name="id" />
  6. <field column="name" name="name" />
  7. </entity>
  8. </document>
  9. </dataConfig>

注:上面的database_name是你创建的数据库名,userName是数据库用户名,passWord是数据库密码,tableName是你的表名,field区域当中的column对应数据库中的列,而name就是solr中显示的名称。

4. 编辑{$instanceDir}/conf/managed-schema (老版本为schema.xml,也可以复制这个文件为schema.xml),然后再编辑添加在data-config.xml中对应的字段信息,具体格式如下

  1. <field name="对应data-config.xml字段的name" type="字段类型,注意这里的字段类型是solr中的字段类型,具体见里面的注释" indexed="该字段是否参与了搜索" stored="solr是否要存储该字段" required="是否必须的字段" />

5 . 将solr-dataimporthandler-5.2.1.jar从solr-5.2.1/dist/文件夹下copy到solr-5.2.1/server/solr-webapp/webapp/WEB-INF/lib当中,此java包是导入数据用的。

6. 从mysql官网中下载一个mysql-connector-java-5.1.35.zip压缩包,解压出一个mysql-connector-java-5.1.35-bin.jar包,将它copy到solr-5.2.1/server/lib下。

7. 重启solr,然后去管理台通过当前的core的Dataimport选项导入数据。

solr Query

http://www.cnblogs.com/huangfox/p/4043262.html

solr的join查询:

blog.csdn.net/acmilanvanbasten/article/details/35804883

php solr扩展类

  1. <?php
  2. /**
  3. * solr数据操作
  4. * @author sunlibo
  5. */
  6. class phpSolr{
  7. //solr服务器地址及端口设置
  8. private static $options = array (‘hostname => 192.168.12.210′,‘port => 8081’);
  9. /**
  10. * 设置solr库选择
  11. * @param $core string 库名称
  12. */
  13. public static function setCore($core){
  14. if ($core)
  15. self::$options[’path’]=‘solr /’.$core;
  16. }
  17. /**
  18. * 增加solr索引
  19. * @param $fieldArr 索引字段及值
  20. * @return bool true
  21. */
  22. public static function addDocument($fieldArr = array ()){
  23. $client = new SolrClient(self::$options);
  24. $doc = new SolrInputDocument();
  25. foreach ($fieldArr as $k => $v) {
  26. $doc->addField($k , $v);
  27. }
  28. $client->addDocument($doc);
  29. $client->commit();
  30. return true;
  31. }
  32. /**
  33. * 删除索引
  34. * @param $id 主键id id可以为数组形式,应用于多选的情况
  35. * @return bool true
  36. */
  37. public static function delDocument($ids){
  38. $client = new SolrClient(self::$options);
  39. if (is_array($ids))
  40. $client->deleteByIds($ids); else
  41. $client->deleteById($ids);
  42. $client->commit();
  43. return true;
  44. }
  45. /**
  46. * 查询数据
  47. * @param $qwhere 关键字
  48. * @param $fqwhere 附加条件,根据范围检索,适用于数值型
  49. * @param $getField 查询字段
  50. * @param $sort 排序 array(‘duration’=>‘asc’) asc:升序,desc:降序
  51. * @param $pageindex 查询页数
  52. * @param $pagesize 每页显示条数
  53. */
  54. public static function selectQuery($qwhere = array () , $fqwhere = array () , $getField = array () , $sort = array () , $pageindex = 1 , $pagesize = 20){
  55. $client = new SolrClient(self::$options);
  56. $query = new SolrQuery();
  57. $sel = ”;
  58. foreach ($qwhere as $k => $v) {
  59. $sel .= +’.$k .’:’.$v;
  60. }
  61. $query->setQuery($sel);
  62. //关键字检索
  63. //附加条件,根据范围检索,适用于数值型
  64. if ($fqwhere) {
  65. $query->setFacet(true);
  66. foreach ($fqwhere as $k => $v)
  67. $query->addFacetQuery($v);
  68. //$query->addFacetQuery(‘price:[* TO 500]’);
  69. }
  70. //查询字段
  71. if ($getField) {
  72. foreach ($getField as $key => $val)
  73. $query->addField($val);
  74. }
  75. //排序
  76. if ($sort) {
  77. foreach ($sort as $k => $v) {
  78. if ($v == asc’)
  79. $query->addSortField($k , SolrQuery::ORDER_ASC);
  80. elseif($v == desc’)
  81. $query->addSortField($k , SolrQuery::ORDER_DESC);
  82. }
  83. }
  84. //分页
  85. $query->setStart(self::getPageIndex($pageindex , $pagesize));
  86. $query->setRows($pagesize);
  87. $query_response = $client->query($query);
  88. $response = $query_response->getResponse();
  89. return $response;
  90. }
  91. /**
  92. * 分页数据处理
  93. */
  94. private static function getPageIndex($pageindex , $pagesize){
  95. if ($pageindex <= 1)
  96. $pageindex = 0; else
  97. $pageindex = ($pageindex - 1) * $pagesize;
  98. return $pageindex;
  99. }
  100. }
  101. ?>

参考连接

http://www.ibm.com/developerworks/cn/opensource/os-php-apachesolr/

添加新批注
在作者公开此批注前,只有你和作者可见。
回复批注