/** * 搜索接口。 * * author: Sand * since: 12/15/2016 */ "use strict"; let express = require('express'); let router = express.Router(); let ControllerUtil = require("../../util/controller.util.js"); let ObjectSearcher = require('../../models/search/object.searcher'); const APIv2 = require('../../include/endpoints').APIv2; /** * 搜索。 * * 参数: * user_id: 用户ID * target_role: 目标角色,patient为患者相关,doctor为医生相关 * entity_type: 实体类型,user为用户,session为会话,message为消息,all为全部都搜索 * keyword: 关键字 * exclude_topic_ended_sessions: 排除议题已结束的会话 * page: 第几页,从1开始,当target为all时无效 * size: 页大小,当target为all时无效 * * URL: * /search?user_id=e51ac&target_role=doctor&entity_type=all&keyword=张&exclude_topic_ended_sessions=true&page=1&size=3 */ router.get('/', function (req, res) { ControllerUtil.checkRequestQueryParams(req, ['user_id', 'target_role', 'entity_type', 'keyword']); let userId = req.query.user_id; let targetRole = req.query.target_role; let entityType = req.query.entity_type; let keyword = req.query.keyword; let excludeTopicEndedSessions = req.query.exclude_topic_ended_sessions === 'true'; let page = req.query.page; let size = req.query.size; page = page ? parseInt(page) - 1 : 0; size = size ? parseInt(size) : 10; let searcher = new ObjectSearcher(); ControllerUtil.regModelEventHandler(searcher, res); searcher.search(userId, keyword, targetRole, entityType, excludeTopicEndedSessions, page, size); }); module.exports = router;