360ホームページの検索結果は次のとおりです
1。完成したSchoolNetキャンパスネットワークのメインディレクトリ構造は次のとおりです
主に、中国語、最初の文字、ピンインの完全な文字をサポートするインテリジェントな検索と肌の交換を実現します
ページ効果は次のとおりです
メインコアコードは次のとおりです
1.head.jsp
<%@ページインポート= "java.io.file"%> <%@ page言語= "java" import = "java.util。*" pageencoding = "utf-8"%> <%@ taglib prefix = "c" uri = "http://java.sun.com/jsp/jsstl/ uri = "http://java.sun.com/jsp/jstl/functions"%> <!doctype html public " - // w3c // dtd xhtml 1.0 transitional // en" "" http://www.w3.org/tr/xhtml1/dtd/dtddtddtml1-trans <html> <head> <title>キャンパスネットワークのホームページ</title> <link rel = "styleSheet" href = "/schulnet/css/index.css" type = "text/css"/> <script = "text/javascript" src = "/schulnet/js/ddsmoothmenu.js"> </</</script src = "/schulnet/js/jquery.js"> </script> <script src = "/schulnet/js/jquery-ui.js"> </script> <script> <script type = "text/javascript" src = "/shuriNet/js/publicjs.js"> </script> <script = "/javascript" " src = "/schulnet/myajax/ajax_uni.js"> </script> <script type = "text/javascript" src = "/js/style.js"> </script> < {var photo = '$ {loginuser.skin.photo}'; $( "body")。css( "background"、 "#f6f6f6 url(/schulnet/images/pf/" + photo + ")トップリピート"); }); </script> </c:if> </head> <body> <div> <div id = "searchType"> <a href = "javascript:void(0)" onclick = "setSearchType(this)、setSearch()" name = "searchdatas" id = "books.png" onclick = "setSearchType(this)、setSearch()" name = "searchSongs" id = "t01d566d0c28b32ddad.png"> music </a> <a href = "javascript:void(0)" onclick = "setsearchtype(this)、set searted" id = "newspaper.png"> news </a> <a href = "javascript:void(0)" onclick = "setSearchType(this)、setSearch()" name = "searchxiaoshuos" = "library.png"> novel </a> <a href = "javaScript:void(0)") " onclick = "setSearchType(this)、setSearch()" name = "searcharticles" id = "blog.gif"> log </a> </div> <form id = "search-form" action = "/schulnet/othen? src = "/schulnet/magenet/front/books.png" id = "searchimg" style = "margin-bottom"/> <input type = "text" name "name =" search "id =" topsearchtext "oneyup =" setsearch() "onfocus =" newsearch() " <ul id="setsearch"> </ul> </div> <div id="MainMenu"> <ul> <li><a href="/schoolnet/login.do?flag=goHomeUI" id="*menu_selected"><span>Campus Network</a> </a> </li> <li><a href = "/schulnet/login.do?flag = gohomeui"> <span>パーソナルセンター</span> </a> </li> <li> <a href = "/schulnet/profile.do?flag = gohomepageui"> <span>私の家</span> </a>アプリケーション</span> </a> <ul> <li> <a href = "/schulnet/shou.do?flag = shuoshuo&pagenow = 1"> speak </a> </li> <li> <a href = "/schulnet/bulbum.do?flag = myalbumui&pagenow = 1&userid = $ </ eginuser </li> <li> <a href = "/schulnet/friend.do?flag = myfriendui&pagenow = 1"> friends </a> </li> <li> <a href = "/schulnet/article.do?flag = articleui&pagenow = 1&userid = $ {loginer.id" href = "/schulnet/article.do?flag = articului&pagenow = 1&userid = $ {loginuser.id}"> log </a> </li> <li> <a href = "/schulnet/music.do?flag = gomusichome&pagenow = 1" href = "/schulnet/news.do?flag = gonewsui&typeid = 1&pagenow = 1"> news </a> </li> <li> <a href = "/schulnet/datas.do?flag = godatasui&pagenow = 1&action = all"> data </a> </li> < href = "/schulnet/xiaoshuo.do?flag = goxiaoshuoui&pagenow = 1&id = all"> novel </a> </li> <li> <a href = "/schoolnet/skin.do?flag = goskinui&pagenow = 1&id = all" .do?flag = goshareui&pagenow = 1 ">新しいもの</a> </li> </ul> </ul> </li> <li> <a href =" javascript:void(0) "> <span> about </a> </a> </a> <ul> <li> <a href ="/other.do? </li> <li> <a href = "/schulnet/other.do?flag = goaboutui#2"> sitemap </a> </li> <li> <a href = "/schulnet/other?do?flag = goaboutui#2"> sitemap </a> </li> < href = "/schulnet/other.do?flag = goaboutui#3"> copyright statement </a> </li> <li> <a href = "/schulnet/other?flag = goaboutui#4">友達リンク</a> </li> </ul> </li> </li> < href = "javascript:void(0)"> <span> settings </span> </a> <ul> <li> <ul> <lif = "/schulnet/register.do?flag = updui">個人情報の変更</a> </li> <li> <li> <li> <a href = "/lignet/login.do? </li> </li> </li> </li> </li> </li> </li> <c:if test = "$ {loginuser!= null}"> <div id = "page-wrap"> <ul> <li id = "menuedected"> <a id = "menu_selected" href = "/login.do? src = "/schulnet/images/head/$ {loginuser.photo}" style = "margin-top:-18px; margin-left:-10px"/> </a> <ul> <li> <a href = "/schulnet/Register.do?fag = updui" href = "/schulnet/login.do?flag = logout"> exit </a> </li> </ul> </li> </ul> </ul> </div> </c:if> </div> </body> </html> </c 2。メインJS関数
//スイッチ検索タイプを設定し、入力コントロールの焦点をトリガーするときに対応する人気のある(最初の5つの)コンテンツ(情報、音楽、ニュース、小説、ログ)を表示するために使用されます。 function setSearchType(o){$( "#searchType a")。removeclass( "current"); $(o).addclass( "current"); var inputSearchType = $(o).text(); $( "#inputSearchType")。val( "search"+inputSearchType); document.getElementById( "search-form")。action = "/schulnet/other.do?flag ="+o.name+"&searchPagenow = 1"; document.getElementById( "search-form")。name = o.name; document.getElementById( "searchimg")。src = "/schulnet/images/front/"+o.id; $( "#topsearchText")。show(); $( "#searchfriendss")。hide(); if(o.name == "SearchFriends"){$( "#topsearchText")。hide(); $( "#searchfriendss")。show(); }} //スマートプロンプトを表示するようにコンテンツを設定するために使用されます(ファジー検索の上位10マッチ)function setsearch(){var v = document.getElementById( "topsearchText")。value; var type = document.getElementById( "search-form")。name; if(v.length == 0){$( "#setSearch")。html( ""); } if(v.length> 0){$ .ajax({cache:true、type: "post"、url: "/schulnet/changeinfo"、data:{"action": "setsearch"、 "search":v、 "yearchtype":type}、async:false、datatype: "html" $( "#setSearch")。html( ""); }; }メインJavaファイル
if( "searchSongs" .equals(searchType))<span style = "white-space:pre"> </span> {<span style = "white-space:pre"> </span> string namehead [] = chinesepinyintool.getheadbystring(search); <SPAN STYLE = "White-Space:pre"> </span> string nameheadstring = ""; <span style = "ホワイトスペース:pre"> </span> for(int i = 0; i <namehead.length; i ++){<span style = "white-space:pre"> </span> nameheadstring+= namehead [i]; <SPAN STYLE = "White-Space:pre"> </span>} <Span style = "white-space:pre"> </span> string nameall [] = chinesepinyIntool.StringTopinyin(検索); <span style = "ホワイトスペース:pre"> </span> string nameallstring = ""; <span style = "ホワイトスペース:pre"> </span> for(int i = 0; i <nameall.length; i ++){<span style = "white-space:pre"> </span> nameallstring+= nameall [i]; <Span style = "White-Space:pre"> </span>} <Span style = "white-space:pre"> </span> list <song> songs = universionservice.executequerybypage( "from song where"% "%" + nameallstring + "% 'またはpinyin(name)like' + name name +" <span style = "ホワイトスペース:pre"> </span> for(int i = 0; i <songs.size(); i ++)<span style = "white-space:pre"> </span> {<span style = "white-space:pre"> </span> con+= "<li> <a target = 'blank' href = '/schulnet/music.do?flag = gopatentdisplay&pid = "+songs.get(i).getPatent()。getId()+"'> "+songs.get(i).getName()+" </a> </li> "; <span style = "white-space:pre"> </span>} <span style = "white-space:pre"> </span> if(songs.size()!= 0){<span style = "white"> </span> con += " style = 'display:inline; float:right; margin-right:8px;'> close </a> </li> "; <SPANSTYLE = "White-Space:PRE"> </SPAN>} <SPAN STYLE = "White-Style:"> </span> else {<span style = "white-space:pre"> </span> con += "<li> <a href = 'javascript:void(0)' onclick = 'hideli()' style = 'disply; <span style = "ホワイトスペース:pre"> </span>} <span style = "ホワイトスペース:pre"> </span> out.write(con); <span style = "ホワイトスペース:pre"> </span> out.close(); <SPAN STYLE = "White-Space:pre"> </span>} else if( "setpifu" .equals(action))<span style = "white-space:pre"> </span> {<span style = "white"> </span> string skinid = request.getparameter( "scanid"); <SPAN STYLE = "White-Space:pre"> </span> Skin Skin =(Skin)UniversityService.findbyid(Skin.Class、Integer.ValueOf(SkinID)); <SPAN STYLE = "White-Space:pre"> </span>ユーザー=(ユーザー)request.getSession()。getAttribute( "loginuser"); <SPAN STYLE = "White-Space:pre"> </span> user.setskin(スキン); <SPAN STYLE = "White-Space:pre"> </span> UniversityService.update(user); <span style = "ホワイトスペース:pre"> </span>} Pinyin変換を行うときは、pinyin4j.jarパッケージをインポートする必要があります
ChinesepinyIntool Pinyin変換ツールクラス
パッケージschulnet.utils;
net.sourceforge.pinyin4j.pinyinhelperをインポートします。 net.sourceforge.pinyin4j.format.hanyupinyincaseTypeをインポートします。 net.sourceforge.pinyin4j.format.hanyupinyinoutputformatをインポートします。 net.sourceforge.pinyin4j.format.hanyupinyIntoneTypeをインポートします。 net.sourceforge.pinyin4j.format.exception.badhanyupinyinoutputformatcombination; / ** * *中国のピニインツール * * * */ public class chinesepinyIntool {public static void main(string [] args){string string [] = stringtopinyin( "this"); for(int i = 0; i <string.length; i ++){system.out.println(string [i]); }} / ** * *文字列をピニン番号に変換 * * * @param src * @return * / public static string [] stringtopinyin(string src){return stringtopinyin(src、false、null); } / ** *文字列をピニイン番号に変換 * * * * @param src * @return * / public static string [] StringTopinyin(String SRC、String Sepater){return StringTopinyin(SRC、True、Separator); } / ** *文字列を多数のピンインに変換 * * * * @param src * @param ispolyphone *ポリフォニック文字のピニインを見つけるかどうか * * @param分離器 *ポリフォニック文字間の分離 * * @return * / public static string [] Stringopinyin(] Stringopinyin(String src、Boolean ispolypone of String sisterisetor) ( "" .equals(src)|| null == src){return null; } char [] srcchar = src.tochararray(); int srccount = srcchar.length; string [] srcstr = new String [srccount]; for(int i = 0; i <srccount; i ++){srcstr [i] = chartopinyin(srcchar [i]、ispolyphone、隔て); } srcstrを返します。 } / ** *単一の文字をPinyinに変換 * * * @param src * @return * / public static string chartopinyin(char src、boolean ispolyphone、string separator){//中国のpinyin処理hanyupinyoutputformat defaultformat = new hanyupinyinoutfort(); //出力設定、大文字、音声記号defaultformat.setCaseType(hanyupinyincasetype.lowercase); defaultformat.settonetype(hanyupinyIntoneType.without_tone); stringbuffer temppinying = new StringBuffer(); //それが中程度の場合if(src> 128){try {// convert convert on string [] strs = pinyinhelper.tohanyupinyinstringarray(src、defaultformat); //ポリフォニック文字を見つけるかどうか、デフォルトはポリフォニック文字の文字を見つけることです。 if(strs.length!=(i + 1)){//ポリフォニック文字は、特別なシンボルtemppining.append(separator); }}} else {temppining.append(strs [0]); }} catch(badhanyupinyinoutputformatcombination e){e.printstacktrace(); }} else {temppining.append(src); } return temppining.toString(); } public static string hanzitopinyin(string hanzi){return hanzitopinyin(hanzi、 ""); } / ** *漢字をPinyinに変換 * * @param hanzi * @return * / @suppresswarnings( "deprecation")public static string hanzitopinyin(string hanzi、string separator){//中国語のピニン加工hanyinutfortuptuptuptuptuptuptuptupinutputing() //出力設定、大文字、音声記号defaultformat.setCaseType(hanyupinyincasetype.lowercase); defaultformat.settonetype(hanyupinyIntoneType.without_tone); string pinyingsstr = ""; try {pinyingstr = pinyinhelper.tohanyupinyinstring(hanzi、defaultformat、separator); } catch(badhanyupinyinoutputformatcombination e){e.printstacktrace(); } pinyingsstrを返します。 } / ** *文字列アレイを文字列に変換 * * @param str * @param separator *各文字列間の分離 * * @return * / public static string stringarraytostring(string [] str、string separator){stringbuffer sb = new stringbuffer(); for(int i = 0; i <str.length; i ++){sb.append(str [i]); if(str.length!=(i + 1)){sb.append(separator); }} return sb.toString(); } / ** *各文字Arrayを接続 * * * @param str * @return * / public static string stringarraytostring(string [] str){return stringarraytostring(str、 ""); } / ** *文字配列を文字に変換 * * * @param str * @param分離 *個々の文字列間の分離 * * @return * / public static string chararraytostring(char [] ch、string separator){stringbuffer sb = new Stringbuffer(); for(int i = 0; i <ch.length; i ++){sb.append(ch [i]); if(ch.length!=(i + 1)){sb.append(separator); }} return sb.toString(); } / ** *文字配列を文字に変換 * * * @param str * @return * / public static string chararraytostring(char [] ch){return chararraytostring(ch、 ""); } / ** *漢字の最初のキャラクターを取得 * * * @param src * @param iscapital * big * * @return * / public static char [] getheadbychar(char src、boolean iscapital){//中国文字ではない場合、直接返品} //取得したスペル[] pinyingstr = pinyinhelper.tohanyupinyinstringarray(src); //リターンオブジェクトを作成int polyphonesize = pinyingsstr.length; char [] headchars = new char [polyphonesize]; int i = 0; //(string s:pinyingsstr){char headchar = s.charat(0)の最初の単語を傍受します。 //最初の文字が大文字であるかどうかにかかわらず、デフォルトは小さいif(iscapital){headchars [i] = character.touppercase(headchar); } else {headchars [i] = headchar; } i ++; }ヘッドチャールを返します。 } / ** *漢字の最初の単語を取得するためのデフォルトは大きい * * @param src * @return * / public static char [] getheadbychar(char src){return getheadbychar(src、true); } / ** *文字列の最初の文字を見つけます * * @param src * @return * / public static string [] getheadbystring(string src){return getheadbystring(src、true); } / ** *文字列の最初の文字を見つけます * * @param src * @param iscapital *それが大文字であるかどうか * @return * / public static string [] getheadbystring(string src、true); } / ** *文字列の最初の文字を見つけます * * @param src * @param iscapital *大文字 * @return * / public static string [] getheadbystring(string src、boolean iscapital){return getheadbystring(src、iscapital、null); } / ** *文字列イニシャルを見つけます * * @param src * @param iscapital *大文字かどうか * @param分離機 *分離 * * @return * / public static string [] getheadbystring(] getheadbystring(string src、boolean iscapital、string separator){char [] chars = src.tochararray(); string [] headstring = new String [chars.length]; int i = 0; for(char ch:chars){char [] chs = getheadbychar(ch、iscapital); stringbuffer sb = new StringBuffer(); if(null!= separator){int j = 1; for(char ch1:chs){sb.append(ch1); if(j!= chs.length){sb.append(separator); } j ++; }} else {sb.append(chs [0]); } headString [i] = sb.toString(); i ++; }ヘッドストリングを返します。 }}データベースは関連する関数を構築します
fristpinyin:この関数は、中国の弦の最初の漢字をピニインの最初の文字に変換します(たとえば: "ok" - > h)
Pinyin:この関数は、中国の弦のピニインの最初の文字のそれぞれを接続します(たとえば、 "ok" - > hd)
to_pinyin:この関数は、ピニインに対応する中国の弦の完全な文字のそれぞれを接続します(たとえば、 "ok" - > haode)
関数の作成 `fristpinyin`(p_name varchar(255))returens varchar(255)charset utf8 begin v_return varchar(255); set v_return = elt(interval(conv(hex(convert(convert(conver))、1)、16,10)、0xb0c5,0xb2c1,0xb4ee、0xb6ea、0xb7a2,0xb8c1,0xb9fe、0xbbf7、 0xbfa6,0xc0ac、0xc2e8,0xc4c3,0xc5b6,0xc5be、0xc6da、0xc8bb、0xc8f6,0xcbfa、0xcdda、0xcef4,0xd1b9,0xd11)、 'A'、 'b'、 'c' '、' d '、' e '、' f '、' g ''、 'h'、 '' '、k'、 'l'、 'm'、 'n'、 'o'、 'q'、 'r'、 's'、 't'、 'w'、 'x'、 'y'); v_returnを返します。 end create function `pinyin`(p_name varchar(255))returens varchar(255)charset utf8 begin v_compare varchar(255); v_return varchar(255)を宣言します。 I intを宣言します。設定i = 1; set v_return = ''; i <length(p_name)はv_compare = subst(p_name、i、1)を設定します。 if(v_compare!= '')then #set v_return = concat(v_return、 '、'、v_compare); set v_return = concat(v_return、fristpinyin(v_compare)); #set v_return = fristpinyin(v_compare); end if; i = i + 1を設定します。 while; if(isnull(v_return)またはv_return = '')を設定v_return = p_name; end if; v_returnを返します。 end create function to_pinyin(name varchar(255)charset gbk)returns varchar(255)charset gbkはmycode intを宣言します。 tmp_lcode varchar(2)charset gbkを宣言します。 lcode intを宣言します。 tmp_rcode varchar(2)charset gbkを宣言します。 rcode intを宣言します。 mypy varchar(255)charset gbk default ''を宣言します。 lp intを宣言します。 MyCode = 0を設定します。 lp = 1を設定します。 set name = hex(name); while lp <length(name)do set tmp_lcode = substring(name、lp、2); set lcode = cast(ascii(unhex(tmp_lcode))unsigned); tmp_rcode = substring(name、lp + 2、2)を設定します。 rcode = cast(ascii(unhex(tmp_rcode)))set unsigned); lcode> 128の場合、mycode = 65536 -lcode * 256 -rcodeを設定します。 t_base_pinyinからmypyにconcat(mypy、pin_yin_)を選択します。ここで、code_ asc by code_ asc limit 1によってcode_> = abs(mycode)order; LP = LP + 4を設定します。それ以外の場合は、mypy = concat(mypy、char(cast(ascii(unscii(name、lp、2)))))を設定します))); LP = LP + 2を設定します。 end if; while;下位(mypy);終わり;
上記はこの記事のすべての内容です。みんなの学習に役立つことを願っています。誰もがwulin.comをもっとサポートすることを願っています。