forked from liukelin/elastic-search-analyzer
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathanalyzer.html
406 lines (347 loc) · 13.2 KB
/
analyzer.html
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
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
<!DOCTYPE html>
<html class="theme-next muse use-motion">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
<link href="http://www.liukelin.top/images/kelin_48_48.ico" rel="shortcut icon" type="images/vnd.microsoft.icon" />
<title>elastic-ik分词插件 - liukelin</title>
<style type="text/css">
/*table.hovertable {
font-family: verdana,arial,sans-serif;
font-size:11px;
color:#333333;
border-width: 1px;
border-color: #999999;
border-collapse: collapse;
}
table.hovertable th {
background-color:#c3dde0;
border-width: 1px;
padding: 8px;
border-style: solid;
border-color: #a9c6c9;
}*/
/*table.hovertable tr {
background-color:#d4e3e5;
}*/
div.analyze_div {
margin:5px 5px;
}
div.analyze_div span:hover{
/*background-color: red ;*/
border:1px solid red;
}
div.analyze_div span {
background-color: #4CAF50;
padding:3px 5px;
margin:3px 5px;
}
.bg1{
font-weight:bold;
color:#F00;
}
.bg2{
font-weight:bold;
color:#F00;
}
.div0{
padding:5px 0;
width:100%;
}
.div1{
margin:5px 5px;
padding:5px 5px;
border:1px solid #C0C0C0;
}
.div2{
position:relative;
margin:5px 5px;
padding:5px 12px;
border:1px solid #C0C0C0;
}
.button1{
padding:5px 5px;
border:2px solid #77DDFF;
height:25px;
}
.button2{
padding:5px 5px;
border:2px solid #77DDFF;
height:25px;
}
.button3{
background-color: #4CAF50; /* Green */
border: none;
color: white;
padding: 5px 10px;
margin:5px 5px;
text-align: center;
text-decoration: none;
display: inline-block;
/*font-size: 16px;*/
}
.close_button{
position:absolute;
/*width:15px;*/
/*height:15px;*/
/*border:1px solid red;*/
float:right;
z-index:100;
right:0px;/* 定位到右上 */
top:0px;
}
.footer{
/*position: absolute;*/
left: 0;
bottom: 0;
width: 100%;
min-height: 50px;
}
</style>
<script type="text/javascript" src="./js/jquery-1.10.2.min.js"></script>
<script type="text/javascript" src="./js/jquery-ui-1.12.1.custom/jquery-ui.js"></script>
<link rel="stylesheet" href="./js/jquery-ui-1.12.1.custom/jquery-ui.css">
</head>
<body style="padding:5px 15px;position:relative;">
<div class="div0">
语句:
<input type="text" id="word" style="width:350px;height:25px" value="" >
插件:
<select id="plugins" >
<option value ="ik" title="">ik</option>
</select>
分词器:
<select id="ik_type">
<option value ="ik_max_word" title="ik_max_word:会将文本做最细粒度的拆分;尽可能多的拆分出词语">ik_max_word</option>
<option value ="ik_smart" title="ik_smart:会做最粗粒度的拆分;已被分出的词语将不会再次被其它词语占有">ik_smart</option>
</select>
<input type="button" name="" id="search" value="搜索" class="button1 button3">
<input type="button" name="" id="add_content" value="新增测试文章" class="button2 button3" onClick="show_add_content()">
<input type="button" name="" id="" value="添加自定义分词" class="button2 button3" onclick="add_custom_word('hot', '添加自定义分词')">
<input type="button" name="" id="" value="添加屏蔽分词" class="button2 button3" onclick="add_custom_word('stop','添加屏蔽分词')">
<input type="button" name="" id="" value="添加同义词" class="button2 button3" onClick="alert('开发中');">
</div>
<div class="div1" id="div1" style="display: none">
ik_max_word:
<div class="analyze_div" id="analyze_span1"><span>asdas</span><span>asdas</span></div>
ik_smart:
<div class="analyze_div" id="analyze_span2"><span>asdas</span><span>asdas</span></div>
</div>
<!-- Table goes in the document BODY -->
<div class="" id="list">
<!-- <div class="div2">《魔兽世界》(World of Warcraft)是由著名游戏公司暴雪娱乐所制作的第一款网络游戏,属于大型多人在线角色扮演游戏。游戏以该公司出品的即时战略游戏《魔兽争霸》的剧情为历史背景,依托魔兽争霸的历史事件和英雄人物,魔兽世界有着完整的历史背景时间线。 玩家在魔兽世界中冒险、完成任务、新的历险、探索未知的世界、征服怪物等。 2003年《魔兽争霸III:冰封王座》发售之后,暴雪娱乐正式宣布了《魔兽世界》的开发计划(之前已经秘密开发了数年之久)。魔兽世界于2004年在北美公开测试,同年11月23日开始在美国、新西兰、加拿大、澳洲与墨西哥发行。截至2008年底,全球的魔兽世界付费用户已超过1150万人,并成功打进吉尼斯世界纪录大全。2008年4月,魔兽世界在MMORPG市场占有率达62%。 截止2014年01月,全世界创建的账号总数已超过一亿(含试玩版账号),人物角色达到5亿。共有244个国家和地区的人在玩《魔兽世界》,包括南极、巴哈马,圣诞岛,以及托克劳群岛之类。 在中国大陆的原代理商为第九城市,2005年3月21日下午开始限量测试,同年6月6日正式商业化运营。2009年6月7日起中国地区运营商变更为网易。 2016年9月1日,魔兽世界7.0版本全球同步上线。<input type="button" class="close_button" value="✘"></div> -->
</div>
<!-- 添加文章 -->
<div id="add_content_dialog" title="添加测试文章" style="display: none">
<textarea class="div2" id="text_content" style="width: 95%;height: 90%"></textarea>
</div>
<!-- 自定义分词 -->
<div id="add_custom_word" title="添加自定义分词-" style="display: none">
词汇:<input type="text" id="custom_word" style="width:350px;height:25px">
<div class="analyze_div" id="custom_word_div"></div>
</div>
<div class="footer">
<div style="width:100%;text-align: center;margin: 20px auto">
<a href="https://github.com/liukelin/elastic-search-analyzer" target="_blank">GitHub/liukelin</a>
</div>
</div>
<script type="text/javascript">
$(function(){
_search();
$('#search').click(function(){
_analyze();
_search();
});
// 输入自动补全
$("#word").autocomplete({
source: "/elastic-search-analyzer/controller/api.php?action=suggester", // 实际为 /ajax-actions.php?term=c
select: function(e, ui) {
// alert(ui.item.value)
_analyze(ui.item.value);
_search(ui.item.value);
}
});
var htt=location.protocol;
$.ajax({
type: 'post',
data:{
site:window.location.href
},
url: htt+'//bi.liukelin.top/bi/web_bi/',
dataType: 'json'
});
});
function _search(word=''){
var word = word?word:$('#word').val();
// search
$.ajax({
type: 'POST',
data:{
action:'search',
word:word,
plugins:$('#plugins').val(),
ik_type:$('#ik_type').val()
},
url: '/elastic-search-analyzer/controller/api.php',
dataType: 'json',
success: function(data){
var html = '';
if (data) {
if (data.list && data.list.length>0) {
$.each(data.list, function(key,val){
html += '<div class="div2" id="cont_'+val.id+'">'+val.content+'<input type="button" class="close_button" value="✘" title="删除本条数据" onClick="del_content('+val.id+')"></div>';
});
}
}else{
alert('error.');
}
if (html=='') {
html='<div class="div2">没有记录.</div>';
}
$('#list').html(html);
}
});
}
// 分词接口 analyze
function _analyze(word=''){
var word = word?word:$('#word').val();
// analyze
$.ajax({
type: 'POST',
data:{
action:'analyze',
word:word,
// ik_type:$('#ik_type').val()
},
url: '/elastic-search-analyzer/controller/api.php',
dataType: 'json',
success: function(data){
var html1 = '';
var html2 = '';
if (data) {
if (data.ik_max_word && data.ik_max_word.tokens && data.ik_max_word.tokens.length>0) {
$.each(data.ik_max_word.tokens, function(key,val){
html1 += '<span>'+val.token+'</span>';
});
}
if (data.ik_smart && data.ik_smart.tokens && data.ik_smart.tokens.length>0) {
$.each(data.ik_smart.tokens, function(key,val){
html2 += '<span>'+val.token+'</span>';
});
}
}else{
alert('error.');
}
if (html1!='' || html2!='') {
$('#div1').show();
}else{
$('#div1').hide();
}
$('#analyze_span1').html(html1);
$('#analyze_span2').html(html2);
}
});
}
// 添加测试文章
function show_add_content(){
$( "#add_content_dialog" ).dialog({
width: 800,
height: 550,
buttons: {
"取消": function() {
$(this).dialog("close");
$('#text_content').val('');
} ,
"添加": function() {
$.ajax({
type: 'POST',
data:{
action:'add_test_content',
content:$('#text_content').val(),
// way_type:$('#way_type').val()
},
url: '/elastic-search-analyzer/controller/api.php',
dataType: 'json',
success: function(data){
alert(data.msg);
$('#text_content').val('');
$( "#add_content_dialog" ).dialog("close");
_search();
}
});
}
}
});
}
// 删除文章
function del_content(id){
// alert(id);
$.ajax({
type: 'get',
url: '/elastic-search-analyzer/controller/api.php?action=del_test_content&id='+id,
dataType: 'json',
success: function(data){
if (data.ret==0) {
$('#cont_'+id).hide();
}else{
alert(data.msg)
}
}
});
}
// 自定义分词
function get_custom_word(type){
$('#custom_word_div').html('');
$.ajax({
type: 'get',
url: '/elastic-search-analyzer/controller/api.php?action=custom_word&type='+type,
dataType: 'json',
success: function(data){
var html = '';
if (data.data && data.data.length>0) {
$.each(data.data, function(key,val){
html += '<span>'+val+'</span>';
});
}
$('#custom_word_div').html(html);
}
});
}
// 添加自定义分词
function add_custom_word(type, title=''){
// $('#custom_word_div').attr('title',title);
get_custom_word(type);
$( "#add_custom_word" ).dialog({
title: title,
width: 800,
height: 550,
buttons: {
"取消": function() {
$(this).dialog("close");
$('#custom_word').val('');
} ,
"添加": function() {
$.ajax({
type: 'POST',
data:{
action:'custom_word',
work:$('#custom_word').val(),
type:type
},
url: '/elastic-search-analyzer/controller/api.php',
dataType: 'json',
success: function(data){
alert(data.msg);
$('#custom_word').val('');
get_custom_word(type);
}
});
}
}
});
}
</script>
</body>
</html>