|
|
|
|
@ -19,37 +19,18 @@
|
|
|
|
|
</resultMap>
|
|
|
|
|
|
|
|
|
|
<select id="searchByKeyword" resultMap="SearchRawRecordResult">
|
|
|
|
|
<!-- 统一 UNION 各分支的字符集和排序规则,避免历史表结构 collation 不一致时搜索兜底 SQL 直接失败 -->
|
|
|
|
|
SELECT *
|
|
|
|
|
FROM (
|
|
|
|
|
SELECT 'menu' AS source_type,
|
|
|
|
|
CAST(m.web_menu_id AS CHAR) AS biz_id,
|
|
|
|
|
m.web_menu_name AS title,
|
|
|
|
|
CONCAT(IFNULL(m.web_menu_name, ''), ' ', IFNULL(m.ancestors, '')) AS content,
|
|
|
|
|
NULL AS web_code,
|
|
|
|
|
NULL AS type_id,
|
|
|
|
|
NULL AS device_id,
|
|
|
|
|
CAST(m.web_menu_id AS CHAR) AS menu_id,
|
|
|
|
|
NULL AS document_id,
|
|
|
|
|
110 AS score,
|
|
|
|
|
m.update_time AS updated_at
|
|
|
|
|
FROM hw_web_menu m
|
|
|
|
|
WHERE m.is_delete = '0'
|
|
|
|
|
AND (
|
|
|
|
|
m.web_menu_name LIKE CONCAT('%', #{keyword}, '%')
|
|
|
|
|
OR m.ancestors LIKE CONCAT('%', #{keyword}, '%')
|
|
|
|
|
)
|
|
|
|
|
|
|
|
|
|
UNION ALL
|
|
|
|
|
|
|
|
|
|
SELECT 'web' AS source_type,
|
|
|
|
|
CAST(w.web_id AS CHAR) AS biz_id,
|
|
|
|
|
CONCAT('页面#', w.web_code) AS title,
|
|
|
|
|
w.web_json_string AS content,
|
|
|
|
|
CAST(w.web_code AS CHAR) AS web_code,
|
|
|
|
|
NULL AS type_id,
|
|
|
|
|
NULL AS device_id,
|
|
|
|
|
NULL AS menu_id,
|
|
|
|
|
NULL AS document_id,
|
|
|
|
|
SELECT CONVERT('web' USING utf8mb4) COLLATE utf8mb4_general_ci AS source_type,
|
|
|
|
|
CONVERT(CAST(w.web_id AS CHAR) USING utf8mb4) COLLATE utf8mb4_general_ci AS biz_id,
|
|
|
|
|
CONVERT(CONCAT('页面#', w.web_code) USING utf8mb4) COLLATE utf8mb4_general_ci AS title,
|
|
|
|
|
CONVERT(IFNULL(w.web_json_string, '') USING utf8mb4) COLLATE utf8mb4_general_ci AS content,
|
|
|
|
|
CONVERT(CAST(w.web_code AS CHAR) USING utf8mb4) COLLATE utf8mb4_general_ci AS web_code,
|
|
|
|
|
CAST(NULL AS CHAR CHARACTER SET utf8mb4) COLLATE utf8mb4_general_ci AS type_id,
|
|
|
|
|
CAST(NULL AS CHAR CHARACTER SET utf8mb4) COLLATE utf8mb4_general_ci AS device_id,
|
|
|
|
|
CAST(NULL AS CHAR CHARACTER SET utf8mb4) COLLATE utf8mb4_general_ci AS menu_id,
|
|
|
|
|
CAST(NULL AS CHAR CHARACTER SET utf8mb4) COLLATE utf8mb4_general_ci AS document_id,
|
|
|
|
|
80 AS score,
|
|
|
|
|
w.update_time AS updated_at
|
|
|
|
|
FROM hw_web w
|
|
|
|
|
@ -58,15 +39,15 @@
|
|
|
|
|
|
|
|
|
|
UNION ALL
|
|
|
|
|
|
|
|
|
|
SELECT 'web1' AS source_type,
|
|
|
|
|
CAST(w1.web_id AS CHAR) AS biz_id,
|
|
|
|
|
CONCAT('详情#', w1.web_code, '-', w1.typeId, '-', w1.device_id) AS title,
|
|
|
|
|
w1.web_json_string AS content,
|
|
|
|
|
CAST(w1.web_code AS CHAR) AS web_code,
|
|
|
|
|
CAST(w1.typeId AS CHAR) AS type_id,
|
|
|
|
|
CAST(w1.device_id AS CHAR) AS device_id,
|
|
|
|
|
NULL AS menu_id,
|
|
|
|
|
NULL AS document_id,
|
|
|
|
|
SELECT CONVERT('web1' USING utf8mb4) COLLATE utf8mb4_general_ci AS source_type,
|
|
|
|
|
CONVERT(CAST(w1.web_id AS CHAR) USING utf8mb4) COLLATE utf8mb4_general_ci AS biz_id,
|
|
|
|
|
CONVERT(CONCAT('详情#', w1.web_code, '-', w1.typeId, '-', w1.device_id) USING utf8mb4) COLLATE utf8mb4_general_ci AS title,
|
|
|
|
|
CONVERT(IFNULL(w1.web_json_string, '') USING utf8mb4) COLLATE utf8mb4_general_ci AS content,
|
|
|
|
|
CONVERT(CAST(w1.web_code AS CHAR) USING utf8mb4) COLLATE utf8mb4_general_ci AS web_code,
|
|
|
|
|
CONVERT(CAST(w1.typeId AS CHAR) USING utf8mb4) COLLATE utf8mb4_general_ci AS type_id,
|
|
|
|
|
CONVERT(CAST(w1.device_id AS CHAR) USING utf8mb4) COLLATE utf8mb4_general_ci AS device_id,
|
|
|
|
|
CAST(NULL AS CHAR CHARACTER SET utf8mb4) COLLATE utf8mb4_general_ci AS menu_id,
|
|
|
|
|
CAST(NULL AS CHAR CHARACTER SET utf8mb4) COLLATE utf8mb4_general_ci AS document_id,
|
|
|
|
|
90 AS score,
|
|
|
|
|
w1.update_time AS updated_at
|
|
|
|
|
FROM hw_web1 w1
|
|
|
|
|
@ -75,41 +56,23 @@
|
|
|
|
|
|
|
|
|
|
UNION ALL
|
|
|
|
|
|
|
|
|
|
SELECT 'document' AS source_type,
|
|
|
|
|
d.document_id AS biz_id,
|
|
|
|
|
IFNULL(NULLIF(d.json, ''), d.document_id) AS title,
|
|
|
|
|
IFNULL(d.json, '') AS content,
|
|
|
|
|
d.web_code AS web_code,
|
|
|
|
|
d.type AS type_id,
|
|
|
|
|
NULL AS device_id,
|
|
|
|
|
NULL AS menu_id,
|
|
|
|
|
d.document_id AS document_id,
|
|
|
|
|
SELECT CONVERT('document' USING utf8mb4) COLLATE utf8mb4_general_ci AS source_type,
|
|
|
|
|
CONVERT(IFNULL(d.document_id, '') USING utf8mb4) COLLATE utf8mb4_general_ci AS biz_id,
|
|
|
|
|
CONVERT(IFNULL(NULLIF(d.json, ''), d.document_id) USING utf8mb4) COLLATE utf8mb4_general_ci AS title,
|
|
|
|
|
CONVERT(IFNULL(d.json, '') USING utf8mb4) COLLATE utf8mb4_general_ci AS content,
|
|
|
|
|
CONVERT(IFNULL(d.web_code, '') USING utf8mb4) COLLATE utf8mb4_general_ci AS web_code,
|
|
|
|
|
CONVERT(IFNULL(d.type, '') USING utf8mb4) COLLATE utf8mb4_general_ci AS type_id,
|
|
|
|
|
CAST(NULL AS CHAR CHARACTER SET utf8mb4) COLLATE utf8mb4_general_ci AS device_id,
|
|
|
|
|
CAST(NULL AS CHAR CHARACTER SET utf8mb4) COLLATE utf8mb4_general_ci AS menu_id,
|
|
|
|
|
CONVERT(IFNULL(d.document_id, '') USING utf8mb4) COLLATE utf8mb4_general_ci AS document_id,
|
|
|
|
|
70 AS score,
|
|
|
|
|
d.update_time AS updated_at
|
|
|
|
|
FROM hw_web_document d
|
|
|
|
|
WHERE d.is_delete = '0'
|
|
|
|
|
AND (
|
|
|
|
|
d.json LIKE CONCAT('%', #{keyword}, '%')
|
|
|
|
|
OR d.document_id LIKE CONCAT('%', #{keyword}, '%')
|
|
|
|
|
OR d.document_id LIKE CONCAT('%', #{keyword}, '%')
|
|
|
|
|
)
|
|
|
|
|
|
|
|
|
|
UNION ALL
|
|
|
|
|
|
|
|
|
|
SELECT 'configType' AS source_type,
|
|
|
|
|
CAST(ct.config_type_id AS CHAR) AS biz_id,
|
|
|
|
|
ct.config_type_name AS title,
|
|
|
|
|
CONCAT(IFNULL(ct.config_type_name, ''), ' ', IFNULL(ct.home_config_type_name, ''), ' ', IFNULL(ct.config_type_desc, '')) AS content,
|
|
|
|
|
NULL AS web_code,
|
|
|
|
|
CAST(ct.config_type_id AS CHAR) AS type_id,
|
|
|
|
|
NULL AS device_id,
|
|
|
|
|
NULL AS menu_id,
|
|
|
|
|
NULL AS document_id,
|
|
|
|
|
65 AS score,
|
|
|
|
|
ct.update_time AS updated_at
|
|
|
|
|
FROM hw_portal_config_type ct
|
|
|
|
|
WHERE ct.config_type_name LIKE CONCAT('%', #{keyword}, '%')
|
|
|
|
|
OR ct.home_config_type_name LIKE CONCAT('%', #{keyword}, '%')
|
|
|
|
|
OR ct.config_type_desc LIKE CONCAT('%', #{keyword}, '%')
|
|
|
|
|
) s
|
|
|
|
|
ORDER BY s.score DESC, s.updated_at DESC
|
|
|
|
|
LIMIT 500
|
|
|
|
|
|