solr6.6安装及在php中的使用

一、solr软件包下载

Solr 可从 Solr 网站获取。您可以在此下载最新版本的 Solr:https://lucene.apache.org/solr/mirrors-solr-latest-redir.html

Solr 有三个独立的软件包:

  • solr-7.0.0.tgz:适用于 Linux / Unix / OSX 系统

  • solr-7.0.0.zip:适用于 Microsoft Windows 系统

  • solr-7.0.0-src.tgz:Solr 源代码包。如果您想在 Solr 上开发而不使用官方的 Git 存储库,这将非常有用。

我使用的6.6版本

http://archive.apache.org/dist/lucene/solr/6.6.0/

二、启动solr

进入: solr-6.0.0\bin

运行命令: solr.cmd start

solr默认监听的是8983端口

打开web管理客户端:http://localhost:8983/solr/,查看结果

三、solr添加文档的三种方式

    • 在可视化管理界面操作
2.从数据库同步数据

进入/server/solr/,新建目录,目录名自己随便定义,我定义的是core_test,然后将~/solr-root/server/solr/configsets/basic_configs/目录中的conf目录复制到刚才新建的core_test中。

data-config.xml

新建data-config.xml文件,然后将下面内容写入文件中。

<?xml version="1.0" encoding="UTF-8"?>
<dataConfig>
    <dataSource name="source1" type="JdbcDataSource"
              driver="com.mysql.jdbc.Driver"
              url="jdbc:mysql://127.0.0.1:3306/emails"
              user="root"
              password="root"
              batchSize="-1" />
    <document>
        <entity name="users" dataSource="source1"
            query="select id,name,id_card,staff_level,status from users">
            <field column="id" name="id" />
            <field column="name" name="name" />
            <field column="id_card" name="id_card" />
            <field column="staff_level" name="staff_level" />
            <field column="status" name="status" />
        </entity>
    </document>
</dataConfig>

说明:

emails是库名,下面几个field定义的就是select出来的那几个字段。

solrconfig.xml

编辑solrconfig.xml文件,搜索“requestHandler”,讲下面代码加入并列的requestHandler配置块中:

<requestHandler name="/dataimport" class="solr.DataImportHandler">
    <lst name="defaults">
        <str name="config">data-config.xml</str>
    </lst>
</requestHandler>

managed-schema

编辑managed-schema文件,保留以下下三个field:

<field name="_version_" type="plong" indexed="false" stored="false"/>
<field name="_root_" type="string" indexed="true" stored="false" docValues="false" />
<field name="_text_" type="text_general" indexed="true" stored="false" multiValued="true"/>

编辑其它field,跟data-config.xml文件中的field对应:

<field name="id" type="string" indexed="true" stored="true" required="true" multiValued="false" />
<field name="name" type="string" indexed="true" stored="true"/>
<field name="id_card" type="string" indexed="true" stored="true"/>
<field name="staff_level" type="string" indexed="true" stored="true"/>
<field name="status" type="string" indexed="true" stored="true"/>

下载数据库链接库

下载地址:http://central.maven.org/maven2/mysql/mysql-connector-java/8.0.11/mysql-connector-java-8.0.11.jar

将刚才现在的

mysql-connector-java-8.0.11.jar

~/solr-root/dist 目录下的

solr-dataimporthandler-extras-7.5.0.jar 、solr-dataimporthandler-7.5.0.jar

这三个jar包一起拷贝到~/solr-root/server/solr-webapp/webapp/WEB-INF/lib目录下

启动solr

执行启动命令:solr.cmd start

启动成功后按下图操作:

执行完成后就可以查询:

3.使用php操作solr

安装solr扩展

(1)、安装libssh2扩展

下载地址:http://windows.php.net/downloads/pecl/releases/ssh2/

解压完后,会有三个文件,libssh2.dll、php_ssh.dll、php_ssh2.pdb。

将 php_ssh.dll、php_ssh2.pdb 放到你的 PHP 扩展目录下 php/ext/ 下。

将libssh2.dll 复制到 c:/windows/system32;

php.ini中加入 extension=php_ssh2.dll;

重启服务器,查看phpinfo(),是否有显示php_ssh2扩展加载成功。

(2)、安装solr扩展

下载地址:http://windows.php.net/downloads/pecl/releases/solr/;

将压缩包的php_solr.dll、php_solr.pdb 放到你的 php 扩展目录下 php/ext/ 下。

php.ini中加入 extension=php_solr.dll

重启服务器,查看phpinfo(),是否有显示solr扩展加载成功。

安装之前需使用phpinfo()查看自己版本信息、下载相匹配的扩展

安装完成后:

链接solr:

$option = array(
    'hostname' => '192.168.1.165', // solr 服务器ip地址
    'login' => 'admin',            // 用户名 (solr配置了才需要传)
    'password' => 'admin',         // 密码   (solr配置了才需要传)
    'port' => 8983,                // 端口
    'path' => 'solr/testCore'      // 核心
    );
$solrClient = new SolrClient($option);
// 通过ping来判断是否连接成功
try{
    $solrClient->ping();
}catch(Exception $e){
    // 异常,solr服务器连接失败
    echo 'sorl 服务器连接失败!';
    die($e->getMessage());
}

添加文档:

$solrDoc = new SolrInputDocument();
$solrDoc->addField('ID', 7);
$solrDoc->addField('title', '标题11111111111111111111');
$solrDoc->addField('author', 'chenfan');
$solrDoc->addField('content', 'this is test php solrClienthis is test php solrClienthis is test php solrClienthis is test php solrClien');
$solrDoc->addField('lastUpdateTime', time());
$solrDoc->addField('isDelete', 'N');
$solrDoc2 = new SolrInputDocument();
$solrDoc2->addField('ID', 8);
$solrDoc2->addField('title', '标题222222222222222222222');
$solrDoc2->addField('author', 'chenfan');
$solrDoc2->addField('content', 'this is test php solrClienthis is test php solrClienthis is test php solrClienthis is test php solrClien22222222');
$solrDoc2->addField('lastUpdateTime', time());
$solrDoc2->addField('isDelete', 'N');
$solrDocs = array($solrDoc, $solrDoc2);
// 向 solr 服务器添加文档集,失败则抛出异常
try{
    $result = $solrClient->addDocuments($solrDocs, true);
    // 需 commit 才会立即索引
    $solrClient->commit();
    // 优化
    $solrClient->optimize();
    if($result->getResponse()){
        echo '添加成功,添加的数据为:';
        print_r($result->getRawRequest());
    }
}catch(Exception $e){
    echo 'solr 添加异常!';
    die($e->getMessage());
}

注:以上字段需要已在managed-schema中配置

更新文档:

更新文档和添加文档一样,只要在数据中指定要更新的id即可。

查询文档:

$dismaxQuery = new SolrDisMaxQuery('lucene');
$dismaxQuery->setQuery('title:标题') // 查询条件
            ->addSortField('ID', SolrQuery::ORDER_ASC) // 排序
            ->setStart(0) // 开始数
            ->setRows(20) // 条数
            ->setGroup(true) // 开启聚合
            ->addGroupField('author'); // 聚合列
try{
    $result = $solrClient->query($dismaxQuery);
    $result = $result->getResponse();
    // $result = $result->response->docs;
}catch(Exception $e){
    echo 'solr 查询异常!';
    die($e->getMessage());
}
print_r($result);

删除文档:

$result = $solrClient->deleteByQuery('title:标题');
$solrClient->commit();
$ret = $result->getResponse();
var_dump($ret);

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值