阿里云开通了opensearch的服务。
第一步:创建开放搜索应用
1、在开放搜索中创建一个模板,例如名称叫test
2、自定义结构(测试时可以选择现有模版)
3、添加数据表名和类型
注意这里要创建两个表,第一个表名为main,第二个表名为body。id的字段类型为INT。其他为text。
main表中的id “连接外表主键”到body表
4、给body表的newstext(内容全文字段)使用内容转换插件“HTMLTagRemover | newstext”
5、点继续,这样一个简单的全文搜索OpenSearch索引结构就完成了
6、配置字段搜索属性,可直接下一步
7、确认明细,可直接下一步,点创建
8、创建应用
9、找到结构类型模板test
下一步。
10、配置数据源
11、连接数据
12、如果数据表里的字段没有修改过都能匹配上,点保存。
13、同样的办法连接body表,新闻正文内容存放表对应表名是news,下一步
14、创建,这个时候这个应用就创建成功了。然后激活应用。
15、应用激活之后,开始重建索引,选择导入+重建,然后勾选main表和body表,点击创建。
16、搜索结果相关性配置
17、搜索结果摘要飘红字段配置
直接上代码:
<?php
header("Content-Type:text/html;charset=utf-8");
define("DS", DIRECTORY_SEPARATOR);
define("ROOT_DIR", dirname(__FILE__));
require_once(ROOT_DIR . DS ."config" . DS . 'config.php');
require_once(ROOT_DIR . DS . SDK_VERSION . DS . 'CloudsearchClient.php');
require_once(ROOT_DIR . DS . SDK_VERSION . DS . 'CloudsearchSearch.php');
require_once(ROOT_DIR . DS . "config" . DS . 'pagination.php');
require_once(ROOT_DIR . DS . "config" . DS . 'infosearch.php');
$url_query = Pagination::getURLQuery();
try {
$client = new CloudsearchClient(
ACCESSKEYID,
SECRET,
array('host' => 'http://opensearch.aliyuncs.com'),
KEY_TYPE
);
$search = new CloudsearchSearch($client);
//设置要搜索的应用名称:
$search->addIndex(APP_NAME);
//获取请求参数
$param = InfoSearch::loadParam();
//设置搜索参数
InfoSearch::buildSearchParam($param,$search);
//获取搜索结果。
$search_result = json_decode($search->search(),true);
$result = $search_result["result"];
} catch (Exception $e) {
// pass
}
//分页
$total = isset($result['total']) ? $result['total'] : 0;
$view_total = isset($result['viewtotal']) ? $result['viewtotal'] : 0;
$opts = array('perpage' => InfoSearch::PAGE_SIZE, 'current_page' => $param["page"]);
$pagination = new Pagination($view_total, $url_query, $opts);
$pagination_str = $pagination->getPagination();
?>