SlideShare ist ein Scribd-Unternehmen logo
1 von 197
Downloaden Sie, um offline zu lesen
網路服務就是一連串搜尋的集合體
Kewang, Funliday
Kewang
●
Funliday co-founder & CTO
●
Java / JavaScript
●
HBase / PostgreSQL / MongoDB / Elasticsearch
●
Git / DevOps
●
熱愛開源
Linkedin
Linkedin kewangtw
kewangtw
SlideShare
SlideShare kewang
kewang
Gmail
Gmail cpckewang
cpckewang
Facebook
Facebook Kewang 的資訊進化論
Kewang 的資訊進化論
devopsday taipei
devopsday taipei '17
'17
hadoopcon
hadoopcon '14 '15
'14 '15
jcconf
jcconf '16 '17 '18
'16 '17 '18
modernweb
modernweb '18 '19 '20
'18 '19 '20
GitHub
GitHub kewang
kewang
Funliday
Funliday kewang
kewang
mopcon
mopcon '14 '20
'14 '20
coscupcoscup '20'21'20'21
coscup
coscup '20 '21
'20 '21
4
Agenda
5
Agenda
6
1.外部搜尋引擎會遇到的問題
Agenda
7
1.外部搜尋引擎會遇到的問題
• Rendering
Agenda
8
1.外部搜尋引擎會遇到的問題
• Rendering
• Google Search Console
Agenda
9
1.外部搜尋引擎會遇到的問題
• Rendering
• Google Search Console
2.內部搜尋引擎會遇到的問題
Agenda
10
1.外部搜尋引擎會遇到的問題
• Rendering
• Google Search Console
2.內部搜尋引擎會遇到的問題
• 語系判斷
Agenda
11
1.外部搜尋引擎會遇到的問題
• Rendering
• Google Search Console
2.內部搜尋引擎會遇到的問題
• 語系判斷
• 行政區搜尋
Agenda
12
1.外部搜尋引擎會遇到的問題
• Rendering
• Google Search Console
2.內部搜尋引擎會遇到的問題
• 語系判斷
• 行政區搜尋
• autocomplete 實作
Agenda
13
外部搜尋引擎
14
外部搜尋引擎
讓爬蟲能索引到你的網頁
15
外部搜尋引擎 - Google SERP
16
外部搜尋引擎 - Google SERP
17
外部搜尋引擎 - Google SERP
keyword
18
外部搜尋引擎 - Google SERP
keyword
favicon
19
外部搜尋引擎 - Google SERP
keyword
title
favicon
20
外部搜尋引擎 - Google SERP
keyword
title
favicon
description
21
外部搜尋引擎 - Google SERP
keyword
title
sitelink
favicon
description
22
爬之前 - Rendering
23
Rendering
24
Rendering
25
Rendering
26
Rendering
27
Rendering
28
Rendering
29
爬之後 - Google Search Console
30
索引涵蓋範圍報表 - 有效
31
1.已建立,但未提交至 Sitemap
索引涵蓋範圍報表 - 有效
32
1.已建立,但未提交至 Sitemap
• 已建立索引, Google 不是從 sitemap.xml 找到的
索引涵蓋範圍報表 - 有效
33
1.已建立,但未提交至 Sitemap
• 已建立索引, Google 不是從 sitemap.xml 找到的
2.已提交並建立索引
索引涵蓋範圍報表 - 有效
34
1.已建立,但未提交至 Sitemap
• 已建立索引, Google 不是從 sitemap.xml 找到的
2.已提交並建立索引
• 已建立索引, Google 是從 sitemap.xml 找到的
索引涵蓋範圍報表 - 有效
35
索引涵蓋範圍報表 - 警告
36
1.已建立索引,但遭到 robots.txt 封鎖
索引涵蓋範圍報表 - 警告
37
1.已建立索引,但遭到 robots.txt 封鎖
• 如果確實要禁止 crawler 索引,使用 noindex 封鎖
索引涵蓋範圍報表 - 警告
38
1.已建立索引,但遭到 robots.txt 封鎖
• 如果確實要禁止 crawler 索引,使用 noindex 封鎖
• 如果要 crawler 繼續索引,取消 robots.txt 封鎖
索引涵蓋範圍報表 - 警告
39
索引涵蓋範圍報表 - 錯誤
40
1.伺服器錯誤 (5xx)
索引涵蓋範圍報表 - 錯誤
41
1.伺服器錯誤 (5xx)
• server 回傳 5xx 的錯誤,要儘快修正
索引涵蓋範圍報表 - 錯誤
42
1.伺服器錯誤 (5xx)
• server 回傳 5xx 的錯誤,要儘快修正
2.已提交的網址含有「 noindex 」標記
索引涵蓋範圍報表 - 錯誤
43
1.伺服器錯誤 (5xx)
• server 回傳 5xx 的錯誤,要儘快修正
2.已提交的網址含有「 noindex 」標記
• 網頁回傳 noindex 標記,所以無法對其索引
索引涵蓋範圍報表 - 錯誤
44
1.伺服器錯誤 (5xx)
• server 回傳 5xx 的錯誤,要儘快修正
2.已提交的網址含有「 noindex 」標記
• 網頁回傳 noindex 標記,所以無法對其索引
3.已提交的網址發生轉址式 404 錯誤
索引涵蓋範圍報表 - 錯誤
45
1.伺服器錯誤 (5xx)
• server 回傳 5xx 的錯誤,要儘快修正
2.已提交的網址含有「 noindex 」標記
• 網頁回傳 noindex 標記,所以無法對其索引
3.已提交的網址發生轉址式 404 錯誤
• 網頁內容告知使用者網頁不存在,但同時又回傳
200 成功
索引涵蓋範圍報表 - 錯誤
46
索引涵蓋範圍報表 - 排除
47
1.找不到 (404)
索引涵蓋範圍報表 - 排除
48
1.找不到 (404)
• crawler 會降低對該網址的檢索頻率
索引涵蓋範圍報表 - 排除
49
1.找不到 (404)
• crawler 會降低對該網址的檢索頻率
• 如果該網址已移到新網址,使用 301 重導
索引涵蓋範圍報表 - 排除
50
1.找不到 (404)
• crawler 會降低對該網址的檢索頻率
• 如果該網址已移到新網址,使用 301 重導
2.替代頁面 ( 有適當的標準標記 )
索引涵蓋範圍報表 - 排除
51
1.找不到 (404)
• crawler 會降低對該網址的檢索頻率
• 如果該網址已移到新網址,使用 301 重導
2.替代頁面 ( 有適當的標準標記 )
• 內容與另個網頁相同,且正確指向另個網頁
索引涵蓋範圍報表 - 排除
52
1.找不到 (404)
• crawler 會降低對該網址的檢索頻率
• 如果該網址已移到新網址,使用 301 重導
2.替代頁面 ( 有適當的標準標記 )
• 內容與另個網頁相同,且正確指向另個網頁
3.頁面會重新導向
索引涵蓋範圍報表 - 排除
53
1.找不到 (404)
• crawler 會降低對該網址的檢索頻率
• 如果該網址已移到新網址,使用 301 重導
2.替代頁面 ( 有適當的標準標記 )
• 內容與另個網頁相同,且正確指向另個網頁
3.頁面會重新導向
• 舊網址會重新導向新網址,所以不會對舊網址索引
索引涵蓋範圍報表 - 排除
54
特殊狀況
55
轉址式 404 (soft 404)
56
• 傳回的頁面告訴使用者網頁不存在,且回傳 200 成功
轉址式 404 (soft 404)
57
• 傳回的頁面告訴使用者網頁不存在,且回傳 200 成功
• 傳回的頁面只有少許內容或完全沒有任何內容
轉址式 404 (soft 404)
58
這是重複網頁
59
• 使用者未選取標準網頁
這是重複網頁
60
• 使用者未選取標準網頁
• 這個網頁與其他網頁重複,但沒有標示標準網頁
這是重複網頁
61
• 使用者未選取標準網頁
• 這個網頁與其他網頁重複,但沒有標示標準網頁
• Google 選擇的標準網頁和使用者的選擇不同
這是重複網頁
62
• 使用者未選取標準網頁
• 這個網頁與其他網頁重複,但沒有標示標準網頁
• Google 選擇的標準網頁和使用者的選擇不同
• 已將網頁 A 標示為一系列網頁的標準頁面,但
Google 認為網址 B 更適合標準網址,所以 Google
為網址 B 的頁面建立索引
這是重複網頁
63
• 使用者未選取標準網頁
• 這個網頁與其他網頁重複,但沒有標示標準網頁
• Google 選擇的標準網頁和使用者的選擇不同
• 已將網頁 A 標示為一系列網頁的標準頁面,但
Google 認為網址 B 更適合標準網址,所以 Google
為網址 B 的頁面建立索引
• 已提交的網址未獲選為標準網址
這是重複網頁
64
• 使用者未選取標準網頁
• 這個網頁與其他網頁重複,但沒有標示標準網頁
• Google 選擇的標準網頁和使用者的選擇不同
• 已將網頁 A 標示為一系列網頁的標準頁面,但
Google 認為網址 B 更適合標準網址,所以 Google
為網址 B 的頁面建立索引
• 已提交的網址未獲選為標準網址
• Google 認為網址 A 更適合標準網址,因此未將網
址 B 建立索引,而是為網址 A 建立索引
這是重複網頁
65
內部搜尋引擎
66
內部搜尋引擎
讓使用者在內部正常搜尋
67
景點搜尋
68
景點搜尋
69
景點搜尋
city (autocomplete)
70
景點搜尋
city (autocomplete)
keyword
71
景點搜尋
city (autocomplete)
POI
keyword
72
遇到的困難點
73
1.中日韓 (CJK) 的斷詞問題
遇到的困難點
74
1.中日韓 (CJK) 的斷詞問題
2.中日漢字的判斷問題
遇到的困難點
75
1.中日韓 (CJK) 的斷詞問題
2.中日漢字的判斷問題
3.簡繁中文的判斷問題
遇到的困難點
76
1.中日韓 (CJK) 的斷詞問題
2.中日漢字的判斷問題
3.簡繁中文的判斷問題
4.行政區官方名稱的問題
遇到的困難點
77
1.中日韓 (CJK) 的斷詞問題
2.中日漢字的判斷問題
3.簡繁中文的判斷問題
4.行政區官方名稱的問題
5.行政區劃及生活圈的問題
遇到的困難點
78
1.中日韓 (CJK) 的斷詞問題
2.中日漢字的判斷問題
3.簡繁中文的判斷問題
4.行政區官方名稱的問題
5.行政區劃及生活圈的問題
6.母城市的問題
遇到的困難點
79
中日韓 (CJK) 的斷詞問題
80
• 歐美語系使用空格斷詞
中日韓 (CJK) 的斷詞問題
81
• 歐美語系使用空格斷詞
• 中日韓使用詞庫斷詞
中日韓 (CJK) 的斷詞問題
82
• 歐美語系使用空格斷詞
• 中日韓使用詞庫斷詞
• 中文:結巴 (jieba) 斷詞
中日韓 (CJK) 的斷詞問題
83
• 歐美語系使用空格斷詞
• 中日韓使用詞庫斷詞
• 中文:結巴 (jieba) 斷詞
• 日文: kuromoji 斷詞
中日韓 (CJK) 的斷詞問題
84
• 歐美語系使用空格斷詞
• 中日韓使用詞庫斷詞
• 中文:結巴 (jieba) 斷詞
• 日文: kuromoji 斷詞
• 韓文: openkoreantext 斷詞
中日韓 (CJK) 的斷詞問題
85
中日漢字的判斷問題
86
• 同時搜尋正體中文、簡體中文、日文欄位
中日漢字的判斷問題
87
• 同時搜尋正體中文、簡體中文、日文欄位
• 系統語系為中文
中日漢字的判斷問題
88
• 同時搜尋正體中文、簡體中文、日文欄位
• 系統語系為中文
• 加大正體中文及簡體中文權重
中日漢字的判斷問題
89
• 同時搜尋正體中文、簡體中文、日文欄位
• 系統語系為中文
• 加大正體中文及簡體中文權重
• 系統語系為日文
中日漢字的判斷問題
90
• 同時搜尋正體中文、簡體中文、日文欄位
• 系統語系為中文
• 加大正體中文及簡體中文權重
• 系統語系為日文
• 加大日文權重
中日漢字的判斷問題
91
簡繁中文的判斷問題
92
• 同時搜尋正體中文、簡體中文欄位
簡繁中文的判斷問題
93
• 同時搜尋正體中文、簡體中文欄位
• 系統語系為 zh-TW 或 zh-HK
簡繁中文的判斷問題
94
• 同時搜尋正體中文、簡體中文欄位
• 系統語系為 zh-TW 或 zh-HK
• 加大正體中文權重
簡繁中文的判斷問題
95
• 同時搜尋正體中文、簡體中文欄位
• 系統語系為 zh-TW 或 zh-HK
• 加大正體中文權重
• 其他
簡繁中文的判斷問題
96
• 同時搜尋正體中文、簡體中文欄位
• 系統語系為 zh-TW 或 zh-HK
• 加大正體中文權重
• 其他
• 加大簡體中文權重
簡繁中文的判斷問題
97
行政區官方名稱的問題
98
• 舉例:我要去板橋區逛街
行政區官方名稱的問題
99
• 舉例:我要去板橋區逛街
• 絕大部分都是「我要去板橋逛街」
行政區官方名稱的問題
100
• 舉例:我要去板橋區逛街
• 絕大部分都是「我要去板橋逛街」
• 使用者不在意「板橋」是「市」或「區」
行政區官方名稱的問題
101
• 舉例:我要去板橋區逛街
• 絕大部分都是「我要去板橋逛街」
• 使用者不在意「板橋」是「市」或「區」
• 新增 city_alias table
行政區官方名稱的問題
102
• 舉例:我要去板橋區逛街
• 絕大部分都是「我要去板橋逛街」
• 使用者不在意「板橋」是「市」或「區」
• 新增 city_alias table
• 儲存城市的別名
行政區官方名稱的問題
103
行政區劃的問題 - 嘉義
104
行政區劃的問題 - 嘉義
105
行政區劃的問題 - 嘉義
●
嘉義縣是二級縣
●
嘉義市是二級市
●
使用者分不清嘉義縣與嘉義市
106
行政區劃的問題 - 台北
107
行政區劃的問題 - 台北
108
行政區劃的問題 - 台北
●
新北市是一級市
●
台北市是一級市
●
使用者分不清新北市與台北市
109
行政區劃的問題 - 宜蘭
110
行政區劃的問題 - 宜蘭
111
行政區劃的問題 - 宜蘭
●
宜蘭縣是二級縣
●
宜蘭市是三級市
●
使用者分不清宜蘭縣與宜蘭市
112
生活圈的問題 - 台北市中正區
113
生活圈的問題 - 台北市中正區
114
生活圈的問題 - 台北市中正區
●
台北市舊市區劃分模糊
●
使用者分不清中正區與大安區
115
生活圈的問題 - 新北市蘆洲區
116
生活圈的問題 - 新北市蘆洲區
117
生活圈的問題 - 新北市蘆洲區
●
三重蘆洲已經密不可分
●
搜尋蘆洲會一併搜尋三重
●
搜尋三重不一定會搜尋蘆洲
118
生活圈的問題 - 宜蘭縣羅東鎮
119
生活圈的問題 - 宜蘭縣羅東鎮
120
生活圈的問題 - 宜蘭縣羅東鎮
●
羅東夜市曝光度高
●
雖然五結有傳統藝術中心,但前面通常冠上宜蘭或羅東
121
行政區劃及生活圈的問題
122
• 搜尋困難的原因
行政區劃及生活圈的問題
123
• 搜尋困難的原因
• 縣市從屬關係
行政區劃及生活圈的問題
124
• 搜尋困難的原因
• 縣市從屬關係
• 區劃模糊
行政區劃及生活圈的問題
125
• 搜尋困難的原因
• 縣市從屬關係
• 區劃模糊
• 媒體曝光度
行政區劃及生活圈的問題
126
• 搜尋困難的原因
• 縣市從屬關係
• 區劃模糊
• 媒體曝光度
• 新增 city_similar table
行政區劃及生活圈的問題
127
• 搜尋困難的原因
• 縣市從屬關係
• 區劃模糊
• 媒體曝光度
• 新增 city_similar table
• 儲存行政區劃不明顯的城市
行政區劃及生活圈的問題
128
• 搜尋困難的原因
• 縣市從屬關係
• 區劃模糊
• 媒體曝光度
• 新增 city_similar table
• 儲存行政區劃不明顯的城市
• 儲存相同生活圈的城市
行政區劃及生活圈的問題
129
母城市的問題
130
母城市的問題
131
母城市的問題
132
母城市的問題
133
母城市的問題
134
autocomplete 實作
135
autocomplete
136
autocomplete
137
city
autocomplete
138
city
candidates
autocomplete
139
city
label
candidates
autocomplete
140
Sorted Set
141
• Redis 的一種資料型態
Sorted Set
142
• Redis 的一種資料型態
• 使用分數 (score) 做為排序的順序
Sorted Set
143
• Redis 的一種資料型態
• 使用分數 (score) 做為排序的順序
• 若分數相同,則使用字典排序做為順序
Sorted Set
144
索引階段 - 正規化文字
145
索引階段 - 正規化文字
Taïwan
146
索引階段 - 正規化文字
Taïwan
正規化
147
索引階段 - 正規化文字
Taïwan
Taïwan
正規化
148
索引階段 - 正規化文字
Taïwan
Taïwan
正規化
移除附加符號
149
索引階段 - 正規化文字
Taïwan
Taïwan
正規化
Taiwan
移除附加符號
150
索引階段 - 正規化文字
Taïwan
Taïwan
正規化
Taiwan
移除附加符號
轉
小
寫
151
索引階段 - 正規化文字
Taïwan
Taïwan
正規化
Taiwan
移除附加符號
轉
小
寫
taiwan
152
索引階段 - 正規化文字
Taïwan
Taïwan
正規化
Taiwan
移除附加符號
轉
小
寫
移除空白
taiwan
153
索引階段 - 正規化文字
Taïwan
Taïwan
正規化
Taiwan
移除附加符號
轉
小
寫
移除空白
taiwan
taiwan
154
索引階段 - 使用 ZADD 儲存
155
索引階段 - 使用 ZADD 儲存
t
ta
tai
taip
taipe
taipei
taipei*
156
索引階段 - 使用 ZADD 儲存
ZADD 儲存到 Redis
t
ta
tai
taip
taipe
taipei
taipei*
157
索引階段 - 使用 ZADD 儲存
t
ta
tai
taip
taipe
taipei
taipei*
ZADD 儲存到 Redis
t
ta
tai
taip
taipe
taipei
taipei*
158
索引階段 - 使用 ZADD 儲存
ZADD 儲存到 Redis
t
ta
tai
taip
taipe
taipei
taipei*
t
ta
tai
taiw
taiwa
taiwan
taiwan*
t
ta
tai
taip
taipe
taipei
taipei*
159
索引階段 - 使用 ZADD 儲存
ZADD 儲存到 Redis
t
ta
tai
taip
taipe
taipei
taipei*
t
ta
tai
taiw
taiwa
taiwan
taiwan*
ZADD 儲存到 Redis
t
ta
tai
taip
taipe
taipei
taipei*
160
索引階段 - 使用 ZADD 儲存
t
ta
tai
taip
taipe
taipei
taipei*
taiw
taiwa
taiwan
taiwan*
ZADD 儲存到 Redis
t
ta
tai
taip
taipe
taipei
taipei*
t
ta
tai
taiw
taiwa
taiwan
taiwan*
ZADD 儲存到 Redis
161
搜尋階段 - 正規化文字
162
搜尋階段 - 正規化文字
Taïwan
163
搜尋階段 - 正規化文字
Taïwan
正規化
164
搜尋階段 - 正規化文字
Taïwan
Taïwan
正規化
165
搜尋階段 - 正規化文字
Taïwan
Taïwan
正規化
移除附加符號
166
搜尋階段 - 正規化文字
Taïwan
Taïwan
正規化
Taiwan
移除附加符號
167
搜尋階段 - 正規化文字
Taïwan
Taïwan
正規化
Taiwan
移除附加符號
轉
小
寫
168
搜尋階段 - 正規化文字
Taïwan
Taïwan
正規化
Taiwan
移除附加符號
轉
小
寫
taiwan
169
搜尋階段 - 正規化文字
Taïwan
Taïwan
正規化
Taiwan
移除附加符號
轉
小
寫
移除空白
taiwan
170
搜尋階段 - 正規化文字
Taïwan
Taïwan
正規化
Taiwan
移除附加符號
轉
小
寫
移除空白
taiwan
taiwan
171
搜尋階段 - 使用 ZRANK 及 ZRANGE 搜尋
172
搜尋階段 - 使用 ZRANK 及 ZRANGE 搜尋
t
ta
tai
taip
taipe
taipei
taipei*
taiw
taiwa
taiwan
taiwan*
173
搜尋階段 - 使用 ZRANK 及 ZRANGE 搜尋
t
ta
tai
taip
taipe
taipei
taipei*
taiw
taiwa
taiwan
taiwan*
ta
174
搜尋階段 - 使用 ZRANK 及 ZRANGE 搜尋
t
ta
tai
taip
taipe
taipei
taipei*
taiw
taiwa
taiwan
taiwan*
使用者輸入
ta
175
搜尋階段 - 使用 ZRANK 及 ZRANGE 搜尋
t
ta
tai
taip
taipe
taipei
taipei*
taiw
taiwa
taiwan
taiwan*
ta
使用者輸入
ta
176
搜尋階段 - 使用 ZRANK 及 ZRANGE 搜尋
t
ta
tai
taip
taipe
taipei
taipei*
taiw
taiwa
taiwan
taiwan*
ZRANK 定位
ta
使用者輸入
ta
177
搜尋階段 - 使用 ZRANK 及 ZRANGE 搜尋
t
ta
tai
taip
taipe
taipei
taipei*
taiw
taiwa
taiwan
taiwan*
ZRANK 定位
ta
回傳
使用者輸入
ta
178
搜尋階段 - 使用 ZRANK 及 ZRANGE 搜尋
t
ta
tai
taip
taipe
taipei
taipei*
taiw
taiwa
taiwan
taiwan*
ZRANK 定位
ta
回傳
2
使用者輸入
ta
179
搜尋階段 - 使用 ZRANK 及 ZRANGE 搜尋
t
ta
tai
taip
taipe
taipei
taipei*
taiw
taiwa
taiwan
taiwan*
ZRANK 定位
ta
ZRANGE 取得 2 後面 n 個
回傳
2
使用者輸入
ta
180
搜尋階段 - 使用 ZRANK 及 ZRANGE 搜尋
t
ta
tai
taip
taipe
taipei
taipei*
taiw
taiwa
taiwan
taiwan*
ZRANK 定位
ta
ZRANGE 取得 2 後面 n 個
回傳
2
回傳
使用者輸入
ta
181
搜尋階段 - 使用 ZRANK 及 ZRANGE 搜尋
t
ta
tai
taip
taipe
taipei
taipei*
taiw
taiwa
taiwan
taiwan*
ZRANK 定位
ta
ZRANGE 取得 2 後面 n 個
回傳
2
回傳
ta
tai
taip
taipe
taipei
taipei*
taiw
taiwa
taiwan
taiwan*
使用者輸入
ta
182
搜尋階段 - 使用 ZRANK 及 ZRANGE 搜尋
t
ta
tai
taip
taipe
taipei
taipei*
taiw
taiwa
taiwan
taiwan*
ZRANK 定位
ta
ZRANGE 取得 2 後面 n 個
回傳
2
回傳
ta
tai
taip
taipe
taipei
taipei*
taiw
taiwa
taiwan
taiwan*
整理後回傳使用者
使用者輸入
ta
183
搜尋階段 - 使用 ZRANK 及 ZRANGE 搜尋
t
ta
tai
taip
taipe
taipei
taipei*
taiw
taiwa
taiwan
taiwan*
ZRANK 定位
ta
ZRANGE 取得 2 後面 n 個
回傳
2
回傳
ta
tai
taip
taipe
taipei
taipei*
taiw
taiwa
taiwan
taiwan*
整理後回傳使用者
taipei
taiwan
使用者輸入
ta
184
Conclusion
185
Conclusion
186
• 搜尋不是件人幹的事
Conclusion
187
• 搜尋不是件人幹的事
• 外部搜尋
Conclusion
188
• 搜尋不是件人幹的事
• 外部搜尋
• 無法得知 Google 演算法
Conclusion
189
• 搜尋不是件人幹的事
• 外部搜尋
• 無法得知 Google 演算法
• 做好 Google 的建議事項
Conclusion
190
• 搜尋不是件人幹的事
• 外部搜尋
• 無法得知 Google 演算法
• 做好 Google 的建議事項
• 內容為王
Conclusion
191
• 搜尋不是件人幹的事
• 外部搜尋
• 無法得知 Google 演算法
• 做好 Google 的建議事項
• 內容為王
• 內部搜尋
Conclusion
192
• 搜尋不是件人幹的事
• 外部搜尋
• 無法得知 Google 演算法
• 做好 Google 的建議事項
• 內容為王
• 內部搜尋
• 使用者不易理解多欄位搜尋
Conclusion
193
• 搜尋不是件人幹的事
• 外部搜尋
• 無法得知 Google 演算法
• 做好 Google 的建議事項
• 內容為王
• 內部搜尋
• 使用者不易理解多欄位搜尋
• 語意問題要解決
Conclusion
194
• 搜尋不是件人幹的事
• 外部搜尋
• 無法得知 Google 演算法
• 做好 Google 的建議事項
• 內容為王
• 內部搜尋
• 使用者不易理解多欄位搜尋
• 語意問題要解決
• 持續調整多語系搜尋
Conclusion
195
●
Rendering on the Web
●
Index Coverage report
●
Google Search Central
●
Funliday Tech Blog
References
196
工商時間
197
工商時間
https://hahow.in/cr/kewang-backend https://bit.ly/3AueOxt

Weitere ähnliche Inhalte

Was ist angesagt?

你畢業後要任職的軟體業到底都在做些什麼事
你畢業後要任職的軟體業到底都在做些什麼事你畢業後要任職的軟體業到底都在做些什麼事
你畢業後要任職的軟體業到底都在做些什麼事Mu Chun Wang
 
Monitor is all for ops
Monitor is all for opsMonitor is all for ops
Monitor is all for ops琛琳 饶
 
DNS协议与应用简介
DNS协议与应用简介DNS协议与应用简介
DNS协议与应用简介琛琳 饶
 
Yet another introduction to Git - from the bottom up
Yet another introduction to Git - from the bottom upYet another introduction to Git - from the bottom up
Yet another introduction to Git - from the bottom upWen-Tien Chang
 
[PHP 也有 Day #64] PHP 升級指南
[PHP 也有 Day #64] PHP 升級指南[PHP 也有 Day #64] PHP 升級指南
[PHP 也有 Day #64] PHP 升級指南Shengyou Fan
 
Git basis - usage
Git basis - usageGit basis - usage
Git basis - usageEason Cao
 
独爽不如众乐
独爽不如众乐独爽不如众乐
独爽不如众乐Zheng Biao
 
Continuous Delivery Workshop with Ansible x GitLab CI (2nd)
Continuous Delivery Workshop with Ansible x GitLab CI (2nd)Continuous Delivery Workshop with Ansible x GitLab CI (2nd)
Continuous Delivery Workshop with Ansible x GitLab CI (2nd)Chu-Siang Lai
 
Continuous Delivery Workshop with Ansible x GitLab CI
Continuous Delivery Workshop with Ansible x GitLab CIContinuous Delivery Workshop with Ansible x GitLab CI
Continuous Delivery Workshop with Ansible x GitLab CIChu-Siang Lai
 
Continuous Delivery with Ansible x GitLab CI
Continuous Delivery with Ansible x GitLab CIContinuous Delivery with Ansible x GitLab CI
Continuous Delivery with Ansible x GitLab CIChu-Siang Lai
 
Continuous Delivery Workshop with Ansible x GitLab CI (5th)
 Continuous Delivery Workshop with Ansible x GitLab CI (5th) Continuous Delivery Workshop with Ansible x GitLab CI (5th)
Continuous Delivery Workshop with Ansible x GitLab CI (5th)Chu-Siang Lai
 
D2_Node在淘宝的应用实践
D2_Node在淘宝的应用实践D2_Node在淘宝的应用实践
D2_Node在淘宝的应用实践Jackson Tian
 
JCConf2015: groovy to gradle
 JCConf2015: groovy to gradle JCConf2015: groovy to gradle
JCConf2015: groovy to gradleChing Yi Chan
 
Continuous Delivery Workshop with Ansible x GitLab CI (3rd)
Continuous Delivery Workshop with Ansible x GitLab CI (3rd)Continuous Delivery Workshop with Ansible x GitLab CI (3rd)
Continuous Delivery Workshop with Ansible x GitLab CI (3rd)Chu-Siang Lai
 
Git in a nutshell
Git in a nutshellGit in a nutshell
Git in a nutshellNelson Tai
 
Http Headers 與 Cache 機制(2016)
Http Headers 與 Cache 機制(2016)Http Headers 與 Cache 機制(2016)
Http Headers 與 Cache 機制(2016)振揚 陳
 
COSCUP 2016 Workshop: 用 Docker 架設班級 git-it 練習環境
COSCUP 2016 Workshop: 用 Docker 架設班級 git-it 練習環境COSCUP 2016 Workshop: 用 Docker 架設班級 git-it 練習環境
COSCUP 2016 Workshop: 用 Docker 架設班級 git-it 練習環境均民 戴
 
gRPC - 打造輕量、高效能的後端服務
gRPC - 打造輕量、高效能的後端服務gRPC - 打造輕量、高效能的後端服務
gRPC - 打造輕量、高效能的後端服務升煌 黃
 

Was ist angesagt? (19)

你畢業後要任職的軟體業到底都在做些什麼事
你畢業後要任職的軟體業到底都在做些什麼事你畢業後要任職的軟體業到底都在做些什麼事
你畢業後要任職的軟體業到底都在做些什麼事
 
Monitor is all for ops
Monitor is all for opsMonitor is all for ops
Monitor is all for ops
 
DNS协议与应用简介
DNS协议与应用简介DNS协议与应用简介
DNS协议与应用简介
 
Yet another introduction to Git - from the bottom up
Yet another introduction to Git - from the bottom upYet another introduction to Git - from the bottom up
Yet another introduction to Git - from the bottom up
 
[PHP 也有 Day #64] PHP 升級指南
[PHP 也有 Day #64] PHP 升級指南[PHP 也有 Day #64] PHP 升級指南
[PHP 也有 Day #64] PHP 升級指南
 
Git basis - usage
Git basis - usageGit basis - usage
Git basis - usage
 
独爽不如众乐
独爽不如众乐独爽不如众乐
独爽不如众乐
 
Continuous Delivery Workshop with Ansible x GitLab CI (2nd)
Continuous Delivery Workshop with Ansible x GitLab CI (2nd)Continuous Delivery Workshop with Ansible x GitLab CI (2nd)
Continuous Delivery Workshop with Ansible x GitLab CI (2nd)
 
Continuous Delivery Workshop with Ansible x GitLab CI
Continuous Delivery Workshop with Ansible x GitLab CIContinuous Delivery Workshop with Ansible x GitLab CI
Continuous Delivery Workshop with Ansible x GitLab CI
 
Continuous Delivery with Ansible x GitLab CI
Continuous Delivery with Ansible x GitLab CIContinuous Delivery with Ansible x GitLab CI
Continuous Delivery with Ansible x GitLab CI
 
Continuous Delivery Workshop with Ansible x GitLab CI (5th)
 Continuous Delivery Workshop with Ansible x GitLab CI (5th) Continuous Delivery Workshop with Ansible x GitLab CI (5th)
Continuous Delivery Workshop with Ansible x GitLab CI (5th)
 
D2_Node在淘宝的应用实践
D2_Node在淘宝的应用实践D2_Node在淘宝的应用实践
D2_Node在淘宝的应用实践
 
JCConf2015: groovy to gradle
 JCConf2015: groovy to gradle JCConf2015: groovy to gradle
JCConf2015: groovy to gradle
 
My DevOps Tour 1.0
My DevOps Tour 1.0My DevOps Tour 1.0
My DevOps Tour 1.0
 
Continuous Delivery Workshop with Ansible x GitLab CI (3rd)
Continuous Delivery Workshop with Ansible x GitLab CI (3rd)Continuous Delivery Workshop with Ansible x GitLab CI (3rd)
Continuous Delivery Workshop with Ansible x GitLab CI (3rd)
 
Git in a nutshell
Git in a nutshellGit in a nutshell
Git in a nutshell
 
Http Headers 與 Cache 機制(2016)
Http Headers 與 Cache 機制(2016)Http Headers 與 Cache 機制(2016)
Http Headers 與 Cache 機制(2016)
 
COSCUP 2016 Workshop: 用 Docker 架設班級 git-it 練習環境
COSCUP 2016 Workshop: 用 Docker 架設班級 git-it 練習環境COSCUP 2016 Workshop: 用 Docker 架設班級 git-it 練習環境
COSCUP 2016 Workshop: 用 Docker 架設班級 git-it 練習環境
 
gRPC - 打造輕量、高效能的後端服務
gRPC - 打造輕量、高效能的後端服務gRPC - 打造輕量、高效能的後端服務
gRPC - 打造輕量、高效能的後端服務
 

Ähnlich wie 網路服務就是一連串搜尋的集合體

郑焕义 重温网站重构
郑焕义 重温网站重构郑焕义 重温网站重构
郑焕义 重温网站重构Webrebuild
 
Reviews of Designing with Web Standards
Reviews of Designing with Web StandardsReviews of Designing with Web Standards
Reviews of Designing with Web Standardsavenirzheng
 
INTERMEDIATE RAILS Week-1 #1
INTERMEDIATE RAILS  Week-1 #1INTERMEDIATE RAILS  Week-1 #1
INTERMEDIATE RAILS Week-1 #1xdite_rails
 
深入淺出 autocomplete
深入淺出 autocomplete深入淺出 autocomplete
深入淺出 autocompleteMu Chun Wang
 
[DCTPE2011] 3) 主題演講:用Drupal 打造更美好的網際網路
[DCTPE2011] 3) 主題演講:用Drupal 打造更美好的網際網路[DCTPE2011] 3) 主題演講:用Drupal 打造更美好的網際網路
[DCTPE2011] 3) 主題演講:用Drupal 打造更美好的網際網路Drupal Taiwan
 
How To Search with Google (2011修正版)
How To Search with Google (2011修正版)How To Search with Google (2011修正版)
How To Search with Google (2011修正版)Vincent Chu
 
Calliplus 開發經驗分享
Calliplus 開發經驗分享Calliplus 開發經驗分享
Calliplus 開發經驗分享Daniel Kao
 
我要活下來 - Ruby Junior 工程師的存活術
我要活下來 - Ruby Junior 工程師的存活術我要活下來 - Ruby Junior 工程師的存活術
我要活下來 - Ruby Junior 工程師的存活術Li Hsuan Hung
 
Drupal7第三堂
Drupal7第三堂Drupal7第三堂
Drupal7第三堂Hen Chen
 
如何在有限資源下實現十年的後端服務演進
如何在有限資源下實現十年的後端服務演進如何在有限資源下實現十年的後端服務演進
如何在有限資源下實現十年的後端服務演進Mu Chun Wang
 
Introduction to big data
Introduction to big dataIntroduction to big data
Introduction to big data邦宇 叶
 
如何,高效利用搜索引擎+构建网络工具箱
如何,高效利用搜索引擎+构建网络工具箱如何,高效利用搜索引擎+构建网络工具箱
如何,高效利用搜索引擎+构建网络工具箱84zhu
 
改善 Angular 開發流程:你所不知道的 Schematics 程式碼產生器
改善 Angular 開發流程:你所不知道的 Schematics 程式碼產生器改善 Angular 開發流程:你所不知道的 Schematics 程式碼產生器
改善 Angular 開發流程:你所不知道的 Schematics 程式碼產生器Chieh Kai Yang
 
网站前端代码静态检查工具研究
网站前端代码静态检查工具研究网站前端代码静态检查工具研究
网站前端代码静态检查工具研究pop2008
 
Ruby Rails 老司機帶飛
Ruby Rails 老司機帶飛Ruby Rails 老司機帶飛
Ruby Rails 老司機帶飛Wen-Tien Chang
 
Data Crawler using Python (I) | WeiYuan
Data Crawler using Python (I) | WeiYuanData Crawler using Python (I) | WeiYuan
Data Crawler using Python (I) | WeiYuanWei-Yuan Chang
 
淺談物聯網巨量資料挑戰 - Jazz 王耀聰 (2016/3/17 於鴻海內湖) 免費講座
淺談物聯網巨量資料挑戰 - Jazz 王耀聰 (2016/3/17 於鴻海內湖) 免費講座淺談物聯網巨量資料挑戰 - Jazz 王耀聰 (2016/3/17 於鴻海內湖) 免費講座
淺談物聯網巨量資料挑戰 - Jazz 王耀聰 (2016/3/17 於鴻海內湖) 免費講座NTC.im(Notch Training Center)
 
出了问题不要靠猜
出了问题不要靠猜出了问题不要靠猜
出了问题不要靠猜LI Daobing
 

Ähnlich wie 網路服務就是一連串搜尋的集合體 (20)

郑焕义 重温网站重构
郑焕义 重温网站重构郑焕义 重温网站重构
郑焕义 重温网站重构
 
Reviews of Designing with Web Standards
Reviews of Designing with Web StandardsReviews of Designing with Web Standards
Reviews of Designing with Web Standards
 
INTERMEDIATE RAILS Week-1 #1
INTERMEDIATE RAILS  Week-1 #1INTERMEDIATE RAILS  Week-1 #1
INTERMEDIATE RAILS Week-1 #1
 
深入淺出 autocomplete
深入淺出 autocomplete深入淺出 autocomplete
深入淺出 autocomplete
 
Drupal Camp Taipei Keynote
Drupal Camp Taipei KeynoteDrupal Camp Taipei Keynote
Drupal Camp Taipei Keynote
 
[DCTPE2011] 3) 主題演講:用Drupal 打造更美好的網際網路
[DCTPE2011] 3) 主題演講:用Drupal 打造更美好的網際網路[DCTPE2011] 3) 主題演講:用Drupal 打造更美好的網際網路
[DCTPE2011] 3) 主題演講:用Drupal 打造更美好的網際網路
 
How To Search with Google (2011修正版)
How To Search with Google (2011修正版)How To Search with Google (2011修正版)
How To Search with Google (2011修正版)
 
Calliplus 開發經驗分享
Calliplus 開發經驗分享Calliplus 開發經驗分享
Calliplus 開發經驗分享
 
我要活下來 - Ruby Junior 工程師的存活術
我要活下來 - Ruby Junior 工程師的存活術我要活下來 - Ruby Junior 工程師的存活術
我要活下來 - Ruby Junior 工程師的存活術
 
Drupal7第三堂
Drupal7第三堂Drupal7第三堂
Drupal7第三堂
 
如何在有限資源下實現十年的後端服務演進
如何在有限資源下實現十年的後端服務演進如何在有限資源下實現十年的後端服務演進
如何在有限資源下實現十年的後端服務演進
 
Introduction to big data
Introduction to big dataIntroduction to big data
Introduction to big data
 
如何,高效利用搜索引擎+构建网络工具箱
如何,高效利用搜索引擎+构建网络工具箱如何,高效利用搜索引擎+构建网络工具箱
如何,高效利用搜索引擎+构建网络工具箱
 
改善 Angular 開發流程:你所不知道的 Schematics 程式碼產生器
改善 Angular 開發流程:你所不知道的 Schematics 程式碼產生器改善 Angular 開發流程:你所不知道的 Schematics 程式碼產生器
改善 Angular 開發流程:你所不知道的 Schematics 程式碼產生器
 
网站前端代码静态检查工具研究
网站前端代码静态检查工具研究网站前端代码静态检查工具研究
网站前端代码静态检查工具研究
 
Ruby Rails 老司機帶飛
Ruby Rails 老司機帶飛Ruby Rails 老司機帶飛
Ruby Rails 老司機帶飛
 
Data Crawler using Python (I) | WeiYuan
Data Crawler using Python (I) | WeiYuanData Crawler using Python (I) | WeiYuan
Data Crawler using Python (I) | WeiYuan
 
42qu thrift1
42qu thrift142qu thrift1
42qu thrift1
 
淺談物聯網巨量資料挑戰 - Jazz 王耀聰 (2016/3/17 於鴻海內湖) 免費講座
淺談物聯網巨量資料挑戰 - Jazz 王耀聰 (2016/3/17 於鴻海內湖) 免費講座淺談物聯網巨量資料挑戰 - Jazz 王耀聰 (2016/3/17 於鴻海內湖) 免費講座
淺談物聯網巨量資料挑戰 - Jazz 王耀聰 (2016/3/17 於鴻海內湖) 免費講座
 
出了问题不要靠猜
出了问题不要靠猜出了问题不要靠猜
出了问题不要靠猜
 

Mehr von Mu Chun Wang

大解密!用 PostgreSQL 提升 350 倍的 Funliday 推薦景點計算速度
大解密!用 PostgreSQL 提升 350 倍的 Funliday 推薦景點計算速度大解密!用 PostgreSQL 提升 350 倍的 Funliday 推薦景點計算速度
大解密!用 PostgreSQL 提升 350 倍的 Funliday 推薦景點計算速度Mu Chun Wang
 
如何使用 iframe 製作一個易於更新及更安全的前端套件
如何使用 iframe 製作一個易於更新及更安全的前端套件如何使用 iframe 製作一個易於更新及更安全的前端套件
如何使用 iframe 製作一個易於更新及更安全的前端套件Mu Chun Wang
 
pppr - 解決 JavaScript 無法被搜尋引擎正確索引的問題
pppr - 解決 JavaScript 無法被搜尋引擎正確索引的問題pppr - 解決 JavaScript 無法被搜尋引擎正確索引的問題
pppr - 解決 JavaScript 無法被搜尋引擎正確索引的問題Mu Chun Wang
 
Git 可以做到的事
Git 可以做到的事Git 可以做到的事
Git 可以做到的事Mu Chun Wang
 
如何與 Git 優雅地在樹上唱歌
如何與 Git 優雅地在樹上唱歌如何與 Git 優雅地在樹上唱歌
如何與 Git 優雅地在樹上唱歌Mu Chun Wang
 
API Blueprint - API 文件規範的三大領頭之一
API Blueprint - API 文件規範的三大領頭之一API Blueprint - API 文件規範的三大領頭之一
API Blueprint - API 文件規範的三大領頭之一Mu Chun Wang
 
團體共同協作與版本管理 - 01認識共同協作
團體共同協作與版本管理 - 01認識共同協作團體共同協作與版本管理 - 01認識共同協作
團體共同協作與版本管理 - 01認識共同協作Mu Chun Wang
 
手把手教你如何串接 Log 到各種網路服務
手把手教你如何串接 Log 到各種網路服務手把手教你如何串接 Log 到各種網路服務
手把手教你如何串接 Log 到各種網路服務Mu Chun Wang
 
你有想過畢業九年後的你會變什麼樣子嗎?
你有想過畢業九年後的你會變什麼樣子嗎?你有想過畢業九年後的你會變什麼樣子嗎?
你有想過畢業九年後的你會變什麼樣子嗎?Mu Chun Wang
 
HR Search - 輕鬆管理面試者
HR Search - 輕鬆管理面試者HR Search - 輕鬆管理面試者
HR Search - 輕鬆管理面試者Mu Chun Wang
 
Hedis - GET HBase via Redis
Hedis - GET HBase via RedisHedis - GET HBase via Redis
Hedis - GET HBase via RedisMu Chun Wang
 
104學年度行動裝置程式設計課程說明
104學年度行動裝置程式設計課程說明104學年度行動裝置程式設計課程說明
104學年度行動裝置程式設計課程說明Mu Chun Wang
 
Webduino introduction
Webduino introductionWebduino introduction
Webduino introductionMu Chun Wang
 
Firebase introduction
Firebase introductionFirebase introduction
Firebase introductionMu Chun Wang
 
How to build a scalable SNS via Polling & Push
How to build a scalable SNS via Polling & PushHow to build a scalable SNS via Polling & Push
How to build a scalable SNS via Polling & PushMu Chun Wang
 
How to build a scalable SNS using HBase
How to build a scalable SNS using HBaseHow to build a scalable SNS using HBase
How to build a scalable SNS using HBaseMu Chun Wang
 

Mehr von Mu Chun Wang (19)

大解密!用 PostgreSQL 提升 350 倍的 Funliday 推薦景點計算速度
大解密!用 PostgreSQL 提升 350 倍的 Funliday 推薦景點計算速度大解密!用 PostgreSQL 提升 350 倍的 Funliday 推薦景點計算速度
大解密!用 PostgreSQL 提升 350 倍的 Funliday 推薦景點計算速度
 
如何使用 iframe 製作一個易於更新及更安全的前端套件
如何使用 iframe 製作一個易於更新及更安全的前端套件如何使用 iframe 製作一個易於更新及更安全的前端套件
如何使用 iframe 製作一個易於更新及更安全的前端套件
 
pppr - 解決 JavaScript 無法被搜尋引擎正確索引的問題
pppr - 解決 JavaScript 無法被搜尋引擎正確索引的問題pppr - 解決 JavaScript 無法被搜尋引擎正確索引的問題
pppr - 解決 JavaScript 無法被搜尋引擎正確索引的問題
 
Git 可以做到的事
Git 可以做到的事Git 可以做到的事
Git 可以做到的事
 
如何與 Git 優雅地在樹上唱歌
如何與 Git 優雅地在樹上唱歌如何與 Git 優雅地在樹上唱歌
如何與 Git 優雅地在樹上唱歌
 
API Blueprint - API 文件規範的三大領頭之一
API Blueprint - API 文件規範的三大領頭之一API Blueprint - API 文件規範的三大領頭之一
API Blueprint - API 文件規範的三大領頭之一
 
團體共同協作與版本管理 - 01認識共同協作
團體共同協作與版本管理 - 01認識共同協作團體共同協作與版本管理 - 01認識共同協作
團體共同協作與版本管理 - 01認識共同協作
 
Git 經驗分享
Git 經驗分享Git 經驗分享
Git 經驗分享
 
手把手教你如何串接 Log 到各種網路服務
手把手教你如何串接 Log 到各種網路服務手把手教你如何串接 Log 到各種網路服務
手把手教你如何串接 Log 到各種網路服務
 
你有想過畢業九年後的你會變什麼樣子嗎?
你有想過畢業九年後的你會變什麼樣子嗎?你有想過畢業九年後的你會變什麼樣子嗎?
你有想過畢業九年後的你會變什麼樣子嗎?
 
HR Search - 輕鬆管理面試者
HR Search - 輕鬆管理面試者HR Search - 輕鬆管理面試者
HR Search - 輕鬆管理面試者
 
Hedis - GET HBase via Redis
Hedis - GET HBase via RedisHedis - GET HBase via Redis
Hedis - GET HBase via Redis
 
104學年度行動裝置程式設計課程說明
104學年度行動裝置程式設計課程說明104學年度行動裝置程式設計課程說明
104學年度行動裝置程式設計課程說明
 
Webduino introduction
Webduino introductionWebduino introduction
Webduino introduction
 
Lightning Hedis
Lightning HedisLightning Hedis
Lightning Hedis
 
職涯之路
職涯之路職涯之路
職涯之路
 
Firebase introduction
Firebase introductionFirebase introduction
Firebase introduction
 
How to build a scalable SNS via Polling & Push
How to build a scalable SNS via Polling & PushHow to build a scalable SNS via Polling & Push
How to build a scalable SNS via Polling & Push
 
How to build a scalable SNS using HBase
How to build a scalable SNS using HBaseHow to build a scalable SNS using HBase
How to build a scalable SNS using HBase
 

網路服務就是一連串搜尋的集合體