新機能のタグの検索をサポートをします。
既に誰かが登録しているタグを、タグクラウドとして表示し、それをクリックすると別窓にタグのページを表示します。
指定したキーワードで、タグクラウドの表示を絞り込むことも出来ます。
| タグクラウド |
|---|
|
select
chr(60)||'style type='||chr(34)||'text/css'||chr(34)||chr(62)
|| 'table {'
|| ' width:97%;'
|| '}'
|| 'table, tr, th, td, .msg, .submsg {'
|| ' font-family: Meiryo UI, メイリオ, Arial, Helvetica, sans-serif;'
|| ' font-weight: bold;'
|| ' color: #ffffff !important;'
|| ' background: #9999cc !important;'
|| ' border: none !important;'
|| ' -moz-border-radius: 8px;'
|| ' -webkit-border-radius: 8px;'
|| ' border-radius: 8px;'
|| ' margin-left:auto;'
|| ' margin-right:auto;'
|| ' line-height: 160%;'
|| '}'
|| '.submsg {'
|| ' background: #aaaaaa !important;'
|| '}'
|| '.tagcloud {'
|| ' font-size:90%;'
|| ' background:#ffffff;'
|| ' margin:2px;'
|| ' padding:4px;'
|| ' width:99%;'
|| ' min-height:100px;'
|| ' max-height:300px;'
|| ' height:auto;'
|| ' overflow:auto;'
|| ' float:left;'
|| ' -moz-border-radius: 8px;'
|| ' -webkit-border-radius: 8px;'
|| ' border-radius: 8px;'
|| ' line-height: 180% !important;'
|| '}'
|| '.selecttag {'
|| ' font-family: Meiryo UI, メイリオ, Arial, Helvetica, sans-serif;'
|| ' font-weight: bold;'
|| ' background:#ffffff;'
|| ' display: inline;'
|| ' position:relative;'
|| ' margin:-2px 1px;'
|| ' vertical-align:middle;'
|| ' border:1px dotted;'
|| ' cursor:pointer;'
|| ' opacity: 0.7;'
|| '}'
|| '.netabare {background:#fef033;}'
|| '.shinchaku {border:1px dashed #ea4355;}'
|| '.check {background:#a9fca9;}'
|| '.rank1 {font-size:150%;color:#00b800;z-index:90;padding: -1px 2px;top: 0px;}'
|| '.rank2 {font-size:135%;color:#00bf00;z-index:80;padding: -1px 2px;top: 0px;}'
|| '.rank3 {font-size:120%;color:#00c800;z-index:70;padding: 0px 2px;top: 0px;}'
|| '.rank4 {font-size:110%;color:#00cf00;z-index:60;padding: 0px 2px;top: 0px;}'
|| '.rank5 {font-size:100%;color:#00d800;z-index:50;padding: 0px 2px;top: 0px;}'
|| '.rank6 {font-size: 95%;color:#00df00;z-index:40;padding: 1px 3px;top:-1px;}'
|| '.rank7 {font-size: 90%;color:#00e800;z-index:30;padding: 1px 3px;top:-1px;}'
|| '.rank8 {font-size: 85%;color:#00ef00;z-index:20;padding: 1px 3px;top:-1px;}'
|| '.rank9 {font-size: 80%;color:#00f800;z-index:10;padding: 1px 3px;top:-1px;}'
|| '.normal {'
|| ' font-size: 100% !important;'
|| ' color:#00d800 !important;'
|| ' z-index:50 !important;'
|| ' padding: 0px 2px !important;'
|| ' top:0px !important;'
|| '}'
|| 'li.selecttag:hover {'
|| ' background:#b80000 !important;'
|| ' color:#ffffff !important;'
|| ' z-index:100 !important;'
|| '}'
|| chr(60)||'/style'||chr(62)
|| chr(60)||'form id='||chr(34)||'tag_support'||chr(34)||' class='||chr(34)||'tagcloud'||chr(34)||chr(62)
|| chr(60)||'span class='||chr(34)||'msg'||chr(34)||chr(62)
|| ' 絞り込み '
|| chr(60)||'/span'||chr(62)
|| chr(60)||'input style='||chr(34)||'width:40%;'||chr(34)||' id='||chr(34)||'filter'||chr(34)||' onkeyup='||chr(34)||'tag_filter();'||chr(34)||' /'||chr(62)
|| chr(60)||'input type='||chr(34)||'button'||chr(34)||' onclick='||chr(34)||'tag_all();'||chr(34)||' value='||chr(34)||'全てのタグ'||chr(34)||' /'||chr(62)
|| chr(60)||'input type='||chr(34)||'button'||chr(34)||' onclick='||chr(34)||'tag_hanten();'||chr(34)||' value='||chr(34)||'強調反転'||chr(34)||' /'||chr(62)
|| chr(60)||'input type='||chr(34)||'button'||chr(34)||' onclick='||chr(34)||'tag_kyouchou();'||chr(34)||' value='||chr(34)||'強調切替'||chr(34)||' /'||chr(62)
|| chr(60)||'input type='||chr(34)||'button'||chr(34)||' onclick='||chr(34)||'tag_count();'||chr(34)||' value='||chr(34)||'登録数を表示'||chr(34)||' /'||chr(62)
|| chr(60)||'br'||chr(62)
|| ' '
|| chr(60)||'span class='||chr(34)||'submsg'||chr(34)||chr(62)
|| ' '
|| '文字列が似たタグに絞り込みます。数値を入力すると、タグの登録数で絞り込みます。'
|| chr(60)||'/span'||chr(62)
|| chr(60)||'br'||chr(62)
|| ' '
|| chr(60)||'span class='||chr(34)||'selecttag rank5 netabare'||chr(34)
|| chr(62)
|| 'ネタバレ'
|| chr(60)||'/span'||chr(62)
|| ' '
|| chr(60)||'span class='||chr(34)||'submsg'||chr(34)||chr(62)
|| ' '
|| 'ネタバレタグは、こんな感じで表示されます。'
|| chr(60)||'/span'||chr(62)
|| ' '
|| chr(60)||'span class='||chr(34)||'selecttag rank5 shinchaku'||chr(34)
|| chr(62)
|| '新着'
|| chr(60)||'/span'||chr(62)
|| ' '
|| chr(60)||'span class='||chr(34)||'submsg'||chr(34)||chr(62)
|| ' '
|| '新着タグ(3日以内に登録)は、こんな感じで表示されます。'
|| chr(60)||'/span'||chr(62)
|| chr(60)||'/form'||chr(62)
|| (select
chr(60)||'ul class='||chr(34)||'tagcloud'||chr(34)||' id='||chr(34)||'tagcloud'||chr(34)||chr(62)
|| array_to_string(array_agg(tagcloud),'')
|| chr(60)||'/ul'||chr(62)
from
(
select chr(60)
|| 'li class='||chr(34)||'selecttag rank'||rank
|| coalesce((select case when netabare then ' netabare' else '' end
|| case when timestamp >= current_date - '3 days'::interval then ' shinchaku' else '' end
from taglist as tl where tl.name = tagname limit 1), '')
|| chr(34)
|| ' title = '||chr(34)||'('||count||')'||chr(34)
|| ' onclick = '||chr(34)||'jump_tag(this);'||chr(34)
|| chr(62)
|| tagname
|| chr(60)||'/li'||chr(62) as tagcloud
from (select ntile(9) over (order by count(*) desc) as rank
, count(*) as count
, regexp_replace(tag, '^#{1}|#{2}.*$', '', 'g') as tagname
from (select unnest(
regexp_split_to_array(coalesce(' '||hitokoto||' ','')||coalesce(' '||regexp_replace(' '||memo||' ', '\(\r\n|\r|\n\)', ' ', 'g')||' ',''),' +')
) as tag
from userreview
where hitokoto ~ ' #'
or memo ~ ' #'
) as foo
where tag ~ '^#{1}'
group by regexp_replace(tag, '^#{1}|#{2}.*$', '', 'g')
) as bar
order by tagname
) as foobar
)
|| chr(60)||'script type='||chr(34)||'text/javascript'||chr(34)||'\n'
||' language='||chr(34)||'JavaScript'||chr(34)||'\n'
||' src='||chr(34)||'http://blueblueblue.fool.jp/js/ecl.js'||chr(34)||chr(62)||'\n'
||chr(60)||'/script'||chr(62)||'\n'
|| chr(60)||'script type='||chr(34)||'text/javascript'||chr(34)||chr(62) ||'\n'
||'var blank = '||chr(34)||chr(34)||';'||'\n'
||'function jump_tag(obj) {'||'\n'
||' var str = obj.innerHTML;'||'\n'
||' str = str.replace(/\\\([0-9]+\\\)$/, blank);'||'\n'
||' window.open('||chr(34)||'taglist.php?tag='||chr(34)||' + EscapeUTF8(str), '||chr(34)||'_new'||chr(34)||');'||'\n'
||'}'||'\n'
||'function tag_filter() {'||'\n'
||' var str = document.getElementById('||chr(34)||'filter'||chr(34)||').value;'||'\n'
||' var obj = document.getElementById('||chr(34)||'tagcloud'||chr(34)||').getElementsByTagName('||chr(34)||'li'||chr(34)||');'||'\n'
||' if ( isNaN(str) ) {'||'\n'
||' for (i=0;i<obj.length;i++) {'||'\n'
||' var pt = obj[i].innerHTML.length * 8;'||'\n'
||' if (pt >= 100 ) {pt = 100;}'||'\n'
||' if (similar_text(obj[i].innerHTML, str).percent >= pt || obj[i].innerHTML.indexOf(str, 0) >= 0 || str == blank) {'||'\n'
||' obj[i].style.display='||chr(34)||'inline'||chr(34)||';'||'\n'
||' } else {'||'\n'
||' obj[i].style.display='||chr(34)||'none'||chr(34)||';'||'\n'
||' }'||'\n'
||' }'||'\n'
||' } else {'||'\n'
||' for (i=0;i<obj.length;i++) {'||'\n'
||' if (eval(obj[i].title) >= str) {'||'\n'
||' obj[i].style.display='||chr(34)||'inline'||chr(34)||';'||'\n'
||' } else {'||'\n'
||' obj[i].style.display='||chr(34)||'none'||chr(34)||';'||'\n'
||' }'||'\n'
||' }'||'\n'
||' }'||'\n'
||'}'||'\n'
||'function tag_all() {'||'\n'
||' var obj = document.getElementById('||chr(34)||'tagcloud'||chr(34)||').getElementsByTagName('||chr(34)||'li'||chr(34)||');'||'\n'
||' for (i=0;i<obj.length;i++) {'||'\n'
||' obj[i].style.display='||chr(34)||'inline'||chr(34)||';'||'\n'
||' }'||'\n'
||'}'||'\n'
||'function tag_hanten() {'||'\n'
||' var obj = document.getElementById('||chr(34)||'tagcloud'||chr(34)||').getElementsByTagName('||chr(34)||'li'||chr(34)||');'||'\n'
||' for (i=0;i<obj.length;i++) {'||'\n'
||' var str = obj[i].className;'||'\n'
||' var chk = false;'||'\n'
||' for (j=1;j<10;j++) {'||'\n'
||' if(!chk) {'||'\n'
||' obj[i].className=obj[i].className.replace(j+blank,(10-j)+blank);'||'\n'
||' if(str !== obj[i].className) {chk = true};'||'\n'
||' }'||'\n'
||' }'||'\n'
||' }'||'\n'
||'}'||'\n'
||'function tag_kyouchou() {'||'\n'
||' var obj = document.getElementById('||chr(34)||'tagcloud'||chr(34)||').getElementsByTagName('||chr(34)||'li'||chr(34)||');'||'\n'
||' for (i=0;i<obj.length;i++) {'||'\n'
||' if (obj[i].className.indexOf('||chr(34)||' normal'||chr(34)||' , 0) == -1) {'||'\n'
||' obj[i].className=obj[i].className + '||chr(34)||' normal'||chr(34)||';'||'\n'
||' } else {'||'\n'
||' obj[i].className=obj[i].className.replace('||chr(34)||' normal'||chr(34)||',blank);'||'\n'
||' }'||'\n'
||' }'||'\n'
||'}'||'\n'
||'function tag_count() {'||'\n'
||' var obj = document.getElementById('||chr(34)||'tagcloud'||chr(34)||').getElementsByTagName('||chr(34)||'li'||chr(34)||');'||'\n'
||' for (i=0;i<obj.length;i++) {'||'\n'
||' if (obj[i].className.indexOf('||chr(34)||' count'||chr(34)||' , 0) == -1) {'||'\n'
||' obj[i].innerHTML = obj[i].innerHTML + obj[i].title;'||'\n'
||' obj[i].className=obj[i].className + '||chr(34)||' count'||chr(34)||';'||'\n'
||' } else {'||'\n'
||' obj[i].innerHTML = obj[i].innerHTML.substring(0,obj[i].innerHTML.length - obj[i].title.length);'||'\n'
||' obj[i].className=obj[i].className.replace('||chr(34)||' count'||chr(34)||',blank);'||'\n'
||' }'||'\n'
||' }'||'\n'
||'}'||'\n'
||'function similar_text(text1, text2)'||'\n'
||'{'||'\n'
||' function similar_char(text1, len1, text2, len2)'||'\n'
||' {'||'\n'
||' function similar_str(text1, len1, text2, len2)'||'\n'
||' {'||'\n'
||' var pos1 = 0, pos2 = 0, max = 0, i, j, l;'||'\n'
||' for (i = 0; i < len1; ++i)'||'\n'
||' {'||'\n'
||' for (j = 0; j < len2; ++j)'||'\n'
||' {'||'\n'
||' for (l = 0; (i + l < len1)&&(j + l < len2)&&'||'\n'
||' (text1.charAt(i+l) == text2.charAt(j+l)); ++l);'||'\n'
||' if (l > max)'||'\n'
||' {'||'\n'
||' max = l;'||'\n'
||' pos1 = i;'||'\n'
||' pos2 = j;'||'\n'
||' }'||'\n'
||' }'||'\n'
||' }'||'\n'
||' return {'||'\n'
||' '||chr(39)||'pos1'||chr(39)||': pos1,'||'\n'
||' '||chr(39)||'pos2'||chr(39)||': pos2,'||'\n'
||' '||chr(39)||'max'||chr(39)||': max'||'\n'
||' };'||'\n'
||' }'||'\n'
||' var r = similar_str(text1, len1, text2, len2);'||'\n'
||' var sum = r.max;'||'\n'
||' if (sum)'||'\n'
||' {'||'\n'
||' if (r.pos1 && r.pos2)'||'\n'
||' {'||'\n'
||' sum += similar_char(text1, r.pos1, text2, r.pos2);'||'\n'
||' }'||'\n'
||' if((r.pos1 + r.max < len1)&&(r.pos2 + r.max < len2))'||'\n'
||' {'||'\n'
||' sum += similar_char('||'\n'
||' text1.substr(r.pos1 + r.max),'||'\n'
||' len1 - r.pos1 - r.max,'||'\n'
||' text2.substr(r.pos2 + r.max), '||'\n'
||' len2 - r.pos2 - r.max);'||'\n'
||' }'||'\n'
||' }'||'\n'
||' return sum;'||'\n'
||' }'||'\n'
||' var sim = similar_char(text1, text1.length, text2, text2.length);'||'\n'
||' return {'||'\n'
||' '||chr(39)||'similar'||chr(39)||': sim,'||'\n'
||' '||chr(39)||'percent'||chr(39)||': sim * 200.0 / (text1.length + text2.length)'||'\n'
||' };'||'\n'
||'}'||'\n'
|| chr(60)||'/script'||chr(62) as タグクラウド