随着信息量的急剧增长,用户对搜索结果的准确性要求不断提高。传统搜索引擎难以满足多维度的精准搜索需求,因此构建一个灵活且高效的搜索过滤功能显得尤为重要。
Manticore Search是一款开源、高性能的全文搜索引擎,支持快速扩展和复杂查询。您可以从官方渠道下载并安装Manticore Search,以便后续开发使用。
索引是全文搜索的基础。以下示例展示了如何通过PHP调用Manticore Search扩展创建一个包含标题、内容和分类字段的索引:
<?php
require 'vendor/autoload.php';
use ManticoresearchClient;
use ManticoresearchIndex;
use ManticoresearchExceptionsRuntimeException;
use ManticoresearchQueryBoolQuery;
use ManticoresearchQueryQuery;
try {
$client = new Client(['host' => 'localhost', 'port' => 9308]);
$index = new Index($client);
$index->create([
'index' => 'myindex',
'type' => 'mytype',
'fields' => [
'title' => ['type' => 'text'],
'content' => ['type' => 'text'],
'category' => ['type' => 'text']
]
]);
echo "Index created successfully.";
} catch (RuntimeException $e) {
echo $e->getMessage();
}
?>
上述代码成功创建了名为 "myindex" 的索引,包含了必要的文本字段,可根据实际需求调整字段结构。
在索引创建完成后,可以使用以下代码示例实现关键词的全文搜索,支持在标题、内容和分类字段中匹配:
<?php
require 'vendor/autoload.php';
use ManticoresearchClient;
use ManticoresearchQueryBoolQuery;
use ManticoresearchQueryQuery;
$client = new Client(['host' => 'localhost', 'port' => 9308]);
$boolQuery = new BoolQuery();
$query = new Query($client);
$boolQuery->addShould($query->match('title', 'keyword'));
$boolQuery->addShould($query->match('content', 'keyword'));
$boolQuery->addShould($query->match('category', 'keyword'));
$query->bool($boolQuery);
$result = $query->search('myindex', 'mytype');
print_r($result);
?>
此代码执行了对关键词 "keyword" 的搜索,覆盖了多字段匹配,便于满足多样化的查询需求。
基于全文搜索,添加过滤条件可以进一步精确结果。下面示例展示了如何对搜索结果进行过滤,例如筛选特定分类:
<?php
require 'vendor/autoload.php';
use ManticoresearchClient;
use ManticoresearchQueryBoolQuery;
use ManticoresearchQueryQuery;
$client = new Client(['host' => 'localhost', 'port' => 9308]);
$boolQuery = new BoolQuery();
$query = new Query($client);
$boolQuery->addMust($query->match('title', 'keyword'));
$boolQuery->addFilter($query->term('category', 'news'));
$query->bool($boolQuery);
$result = $query->search('myindex', 'mytype');
print_r($result);
?>
通过增加过滤条件,可以有效缩小搜索范围,提高搜索结果的相关性和精确度。
本文介绍了如何结合PHP和Manticore Search实现智能搜索过滤功能。涵盖了环境搭建、索引创建、全文搜索以及条件过滤等关键步骤。希望对您的搜索引擎开发有所启发,并能帮助您打造更符合用户需求的智能搜索体验。