对接阿里云opensearch

阿里云开通了opensearch的服务。

第一步:创建开放搜索应用

1、在开放搜索中创建一个模板,例如名称叫test

op01

2、自定义结构(测试时可以选择现有模版)

对接阿里云opensearch_第1张图片

3、添加数据表名和类型

注意这里要创建两个表,第一个表名为main,第二个表名为body。id的字段类型为INT。其他为text。

main表中的id “连接外表主键”到body表

对接阿里云opensearch_第2张图片

4、给body表的newstext(内容全文字段)使用内容转换插件“HTMLTagRemover | newstext”

对接阿里云opensearch_第3张图片

 

5、点继续,这样一个简单的全文搜索OpenSearch索引结构就完成了

6、配置字段搜索属性,可直接下一步

op05

7、确认明细,可直接下一步,点创建

8、创建应用

对接阿里云opensearch_第4张图片

9、找到结构类型模板test

op07

下一步。

10、配置数据源

对接阿里云opensearch_第5张图片

11、连接数据

对接阿里云opensearch_第6张图片

 

12、如果数据表里的字段没有修改过都能匹配上,点保存。

对接阿里云opensearch_第7张图片

13、同样的办法连接body表,新闻正文内容存放表对应表名是news,下一步

对接阿里云opensearch_第8张图片

 

14、创建,这个时候这个应用就创建成功了。然后激活应用。

对接阿里云opensearch_第9张图片

15、应用激活之后,开始重建索引,选择导入+重建,然后勾选main表和body表,点击创建。

op13

对接阿里云opensearch_第10张图片

 

16、搜索结果相关性配置

op15

17、搜索结果摘要飘红字段配置

op16

直接上代码:

<?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();
?>


你可能感兴趣的:(搜索,阿里云,OpenSearch,接口对接)