1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161
| SELECT
result.company_id,
result.company_logo,
result.ticker,
result.company_status_id,
result.company_name_cn,
result.company_name_en,
result.company_shortname_cn,
result.company_shortname_en,
result.brand_name,
result.year_founded,
result.company_status_name_cn,
result.company_status_name_en,
result.weight,
-- 添加支持拼音 不需要的话 直接用ts
((get_pinyin((result.ts)::text))::tsvector || (get_pinyin((result.ts)::text, 'zm'::text))::tsvector || result.ts) AS ts
FROM (
SELECT computed_list.company_id,
computed_list.company_logo,
computed_list.ticker,
computed_list.company_status_id,
computed_list.company_name_cn,
computed_list.company_name_en,
computed_list.company_shortname_cn,
computed_list.company_shortname_en,
computed_list.brand_name,
computed_list.year_founded,
computed_list.company_status_name_cn,
computed_list.company_status_name_en,
-- 添加权重 将company_status_id转为权重 第一个null可以改为联查作为第三方权重
COALESCE(NULL::integer,
CASE
WHEN ((computed_list.company_status_id)::text ~~ '1%'::text) THEN 2
WHEN ((computed_list.company_status_id)::text ~~ '2%'::text) THEN 1
ELSE 0
END) AS weight,
-- 字段权重 有一部分比如company_shortname_cn用全部作为关键词
COALESCE(setweight(((computed_list.company_id) || ':1 ')::tsvector, 'A'::"char"),'') ||
COALESCE(setweight(to_tsvector('zhcfg',computed_list.company_name_cn), 'A'), '') ||
COALESCE(setweight(to_tsvector(computed_list.company_name_en), 'A'), '') ||
COALESCE(setweight(to_tsvector('zhcfg',computed_list.company_shortname_cn), 'A'), '') ||
COALESCE(setweight(to_tsvector('zhcfg',computed_list.company_shortname_en), 'A'), '') ||
COALESCE(setweight(((computed_list.company_shortname_cn) || ':1 ')::tsvector, 'A'::"char"),'') ||
COALESCE(setweight(((computed_list.company_status_name_en) || ':1 ')::tsvector, 'A'::"char"),'') ||
COALESCE(setweight(((computed_list.brand_name) || ':1 ')::tsvector, 'A'::"char"),'')
as ts
-- 合并掉该合并的部分比如brand name
FROM ( SELECT list.company_id,
list.company_logo,
list.ticker,
list.company_status_id,
list.company_name_cn,
list.company_name_en,
list.company_shortname_cn,
list.company_shortname_en,
-- 合并brand_name
array_to_string(array_agg(list.brand_name), ','::text) AS brand_name,
list.year_founded,
list.company_status_name_cn,
list.company_status_name_en
-- 先整理原始的数据
FROM ( SELECT DISTINCT a.company_id,
a.company_logo,
a.ticker,
a.company_status_id,
a.company_name_cn,
a.company_name_en,
a.company_shortname_cn,
a.company_shortname_en,
b.brand_name,
a.year_founded,
c.name_cn AS company_status_name_cn,
c.name_en AS company_status_name_en
FROM ((company_profile a
LEFT JOIN brand_info b ON (((a.company_id)::text = (b.company_id)::text)))
LEFT JOIN config.dictionary c ON (((a.company_status_id)::text = (c.id)::text)))
WHERE ((a.company_status_id)::text <> '3.3'::text)) list
GROUP BY list.company_id, list.ticker, list.company_status_id, list.company_name_cn, list.company_name_en, list.company_shortname_cn, list.company_shortname_en, list.year_founded, list.company_status_name_cn, list.company_status_name_en) computed_list
) AS RESULT
|