第一步:创建开放搜索应用
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(); ?>