一、solr的安装与配置
首先,我们需要在服务器上安装solr和php的solr扩展。solr的安装步骤可以参考solr的官方文档,php的solr扩展可以使用以下命令进行安装:
sudo pecl install solr
安装完成后,需要将solr扩展添加到php的配置文件中,例如在ubuntu上可以编辑/etc/php/7.0/apache2/php.ini文件,添加以下内容:
extension=solr.so
保存并退出文件后,重启apache服务器使配置生效。
二、创建solr索引
安装完成solr和php的solr扩展后,我们需要创建solr索引。solr索引是一个对应于数据库表中所有数据的一个快速查找表,用于支持全文搜索。创建solr索引的步骤如下:
创建一个新的solr核心sudo su - solr -c "/opt/solr/bin/solr create -c mycore"
mycore是类似于索引的名称,可以自己定义。创建成功后,可以通过访问http://localhost:8983/solr/#/mycore查看。
在solr中定义索引字段在solr中,我们需要定义索引所需要的字段。例如,我们要搜索文章的标题和正文内容,则需要分别定义title和content字段。
可以在solr的管理界面中进行定义:点击左侧的“schema”按钮,在“fields”选项卡下点击“add field”,填写field name为title,field type为text_cn(text_cn是solr的一个中文分析器),点击“save”按钮保存。
同理,可以创建一个名为content的字段,类型也为text_cn。
将数据导入solr索引中创建好solr核心和定义了索引字段后,我们需要将数据库中的数据导入到solr索引中。这可以通过编写一个php脚本来实现。
下面是示例代码:
<?php$servername = "localhost";$username = "root";$password = "password";$dbname = "mydatabase";//连接数据库$conn = new mysqli($servername, $username, $password, $dbname);//检查连接是否成功if ($conn->connect_error) { die("连接失败: " . $conn->connect_error);} //查询数据库中的数据$sql = "select id, title, content from articles";$result = $conn->query($sql);//创建solr客户端$options = array( 'hostname' => 'localhost', 'port' => 8983, 'path' => '/solr/mycore');$client = new solrclient($options);//将数据导入到solr索引中while($row = $result->fetch_assoc()) { $doc = new solrinputdocument(); $doc->addfield('id', $row['id']); $doc->addfield('title', $row['title']); $doc->addfield('content', $row['content']); $client->adddocument($doc);}$client->commit();$client->optimize();echo "solr索引创建成功!";//关闭数据库连接$conn->close();?>
在上述代码中,需要替换$username、$password、$dbname、$options以及solrclient()方法中的mycore为对应的值。
执行这个脚本之后,solr索引中就包含了数据库中的数据,并且可以通过关键字搜索相关的数据。
三、通过solr进行全文搜索
在索引包含数据之后,即可使用 solr 进行全文搜索。通过php应用程序与solr服务器进行通信可以实现搜索功能,solr提供的查询语言是solr查询语言(solr query language,solrq)。查询语法用于将请求的数据与solr索引的数据进行比较,从而识别那些文档包含了所需的文本。
下面是一个简单的搜索代码示例:
<?php//创建solr客户端$options = array( 'hostname' => 'localhost', 'port' => 8983, 'path' => '/solr/mycore');$client = new solrclient($options);//查询数据$query = 'title:关键词';$query_response = $client->query($query);$response = $query_response->getresponse();$docs = $response['response']['docs'];foreach ($docs as $doc) { echo $doc['title'] . "";}?>
上述代码中,需要替换$options以及$query中的mycore和“关键词”为对应的值。
搜索语法中,title:关键词表示搜索标题包含关键词的文档。如果想要搜索内容,可以使用content:关键词的形式。还可以对查询做更多的修改操作,比如模糊查询、范围查询以及布尔查询等等。
四、总结
本文介绍了如何在php中使用solr进行全文搜索的基本步骤。首先通过创建solr索引,将数据库中的数据导入到solr索引中,然后通过php应用程序与solr服务器进行通信进行搜索等操作。在实际应用中还有更多的功能属性和配置选项需要学习和使用,希望本文能对大家有所帮助!
以上就是在php中使用solr进行全文搜索的详细内容。
