锘??xml version="1.0" encoding="utf-8" standalone="yes"?>
]]>
錛堥鍒鍜岄洦錛?/span>
1錛?nbsp;鍩烘湰綾誨瀷鐨勬瘮杈?/span>Ruby鐨勫熀鏈暟鎹被鍨?/span>
1鏁板煎瀷(numeric)
Java鎷ユ湁8縐嶄富娌葷被鍨?/span>, Boolean,byte,char.short,int,long,float,double.鍦ㄥ紑鍙戜腑鎴戜滑寰寰鍙父鐢ㄥ埌boolean, char, int & double銆?/span>
Ruby鍒欏閥濡欑殑浣跨敤浜?/span>2綾?/span> Fixnum鍜?/span>Bignum錛岃屼笖ruby涓嶉渶瑕佷綘鍘誨畾涔夎繖涓暟瀛楃被鍨嬶紝鍙渶浣犺緭鍏ヤ釜鏁幫紝ruby浼氳嚜鍔ㄥ湴榪涜蹇呴』鐨勮漿鎹€傜敤鎴蜂笉蹇呮媴蹇冩暟瀛椾箣闂寸殑宸埆
|
ruby |
Java |
瀛楃涓茶漿鏁板瓧 |
N = ‘ |
N= new Integer(“ |
闅忔満鏁?/span> |
A = rand(5) |
Random random = new java,util.Random(); int A = random.nextInt(5); |
Ruby鎻愪緵鑹ソ鐨勬暟瀛﹁繍綆楀叕寮忥紝榪欎簺鏄?/span>java.math 鎵涓嶈兘澶熸瘮鎷熺殑
1. 瀵規暟鐨勪嬌鐢細Math.loh(1) Math.log10(1000)
2. 姹傜煩闃電畻娉曪紝姹傝В綰垮艦鐨勬柟紼嬬粍錛屽鏁扮殑浣跨敤
2錛?span> 瀛楃涓茬被鍨嬶紙String錛?/span>
Java涓鐞嗗瓧絎︿覆涓鑸兘鏄嬌鐢?/span>String綾繪垨鑰?/span>StringBuffer綾伙紝鑰?/span>ruby鐨勪嬌鐢ㄥ垯鏇村姞鐨勬柟渚垮拰蹇熴?/span>Ruby鐨勫瓧絎︿覆鐨勫ぇ灝忔槸鍙彉鐨勩傚彲浠ユ棤闇浣跨敤鏇村鐨勬椂闂村拰鍐呭瓨銆?/span>
|
ruby |
Java |
鎵撳嵃鏃跺彉閲忓甫鍏ュ瓧絎︿覆 |
Puts “This is #{number}” |
System.out.println(“This is ”+number); |
瀛楃涓庡艱漿鎹?/span> |
?a è97 |
int x = (int)’a’; |
澶у皬鍐欒漿鎹?/span> |
s,downcase |
s.lowerCase(); |
鎴栧緱瀛楃涓查儴鍒?/span> |
s[3.5] |
s.indexOf(3,5); |
3錛?span> 鑼冨洿綾誨瀷銆?/span>
榪欑被鐨勬枃浠舵槸java鎵娌℃湁鐨勶紝鎵浠ュ浜庡緢澶氬紑鍙戜漢鍛樻潵璇磋繖鏄竴涓緢鏂扮殑綾誨瀷錛?/span>
浠h〃浜嗕竴涓郴鍒楃殑鍊鹼紝褰撶劧
浣跨敤s..e鍜?/span>s…e銆傚悗闈㈢殑涓涓笉鍖呮嫭鏈鍚庝竴涓?/span>
(-1..-5).to_a
@@@浣跨敤Ajax鍙?/SPAN>Lucene瀵瑰叾榪涜瀹岀編瀹炵幇@@@ (椋炲垁鍜岄洦)
澶у閮藉Google鐨?/SPAN>suggest鐨勫姛鑳藉ぇ姒傚緢鏈夊叴瓚e惂錛屾垜浠寰楁棦鐒?/SPAN>Google鍋氱殑鍑猴紝閭d箞鎴戜滑涔熻兘鍋氬嚭鏉ワ紝鍏堝鍏惰繘琛屽垎鏋愶紝1.瀵逛簬緗戦〉瀹㈡埛绔殑鎸夐敭鐨勫姩鎬佸彉鍖栵紝Ajax鏄渶濂界殑閫夋嫨錛?/SPAN>
2.濡傛灉鏁版嵁搴撶殑閫夋嫨錛屽垯鍙互鏈夊縐嶉夋嫨寰楋紝BerkeleyDB, Derby鐢氳嚦鑷繁鍋氫釜txt鏂囨湰鏂囦歡錛屾妸鎵闇瑕佺殑鍗曡瘝鍜?/SPAN>result鏁扮洰鏀懼湪鏂囨湰鏂囦歡閲岄兘鑳藉瀹炵幇錛屼絾浠婂ぉ鎴戜滑鏈変簡涓涓緢濂界殑绱㈠紩宸ュ叿Lucene銆傚姞涓?/SPAN>Lucene瀵規垜鐨勫惛寮曞姏錛屽洜姝や粖澶╂垜浠敤涓婂ぇ鐐紝鍗稿幓楦熸灙銆傚紑濮嬫垜浠殑寮鍙戜箣璺?/SPAN>
棣栧厛錛屾垜浠厛寤虹珛涓?/SPAN>demo鐨勬鏋訛紝鎴戝氨鍋氫簡涓繖鏍風殑涓涓?/SPAN>html鏂囦歡錛岀敤浜嗕竴涓?/SPAN>form,涓涓?/SPAN>
杈撳叆鐨勬枃鏈錛屼竴涓閫夐」鍜屼竴涓‘璁ゆ寜閿傚悗闈袱涓病浠涔堝ソ璇寸殑錛屼富瑕佹槸鏂囨湰妗嗙殑璁捐錛屾垜鍋氫簡浠ヤ笅鐨勫畾涔夛紝<input type="text" size=60 id="userid" name="q" autocomplete="off" onKeyUp="validate(event);">銆榪欐牱autocomplete錛?/SPAN>off鎸囧彇娑堢綉欏電殑cache錛岃繖鏍峰氨涓嶄細寮瑰嚭浠ュ墠鎵撹繃鐨勫瓧鐨勭獥鍙o紝閫犳垚娣蜂貢銆?/SPAN>onKeyUp鏄疄鐜?/SPAN>ajax鐨勫叧閿紝鐩稿簲閿洏杈撳叆鐨勬搷浣溿?/SPAN>
鍏舵錛屽紑濮嬫垜浠殑Ajax浜嗭紝欏懼悕鎬濅箟錛?/SPAN>Ajax鎸囧紓姝ョ殑javascript鍜?/SPAN>xml. 鎴戜滑鐨勬墍鏈夊伐浣滈兘浼氬湪javascript涓畬鎴愶紝鑷充簬ajax鍘熺悊錛屽緢澶氬湴鏂歸兘鏈夊緢璇︾粏鐨勮В閲婏紝榪欓噷灝辨寚鍒楀簲鐢ㄤ簡銆?/SPAN>
銆validate(e){
var key=e.KeyCode; //鑾峰緱杈撳叆鐨勯敭鍊?/SPAN>
銆銆//瀹氫箟鎸夐敭鍙瀛楁瘝鏁板瓧錛岀┖鏍鹼紝鍥炶濺錛?/SPAN>Ins鍜?/SPAN>del鏈夋晥錛屽彲浠ラ伩鍏嶄竴浜涙棤鏁堢殑鐩稿簲錛屽茍//杞彂url緇?/SPAN>servlet,閭d箞鎴戜滑鍙絳?/SPAN>servlet榪斿洖xml灝卞彲浠ヤ簡
銆銆if (key>=48 && key<=90 || key==8 || key==32 || key== 45 || key==46){
銆銆銆 var url = "LuceneSearch?id=" + encodeURI(idField.value);
req.open("GET", url, true);
req.onreadystatechange = processRequest;
req.send(null);
}
}
榪欐椂錛屽彲浠ラ氳繃Ajax鐨?/SPAN>3涓?/SPAN>req鐨勮姹傝繘琛屽悜鏈嶅姟鍣ㄥ彂閫侊紝鎴戜滑榪欓噷鍙絳夊緟鏈嶅姟鍣ㄨ繑鍥炵殑xml灝卞彲浠ヤ簡銆?/SPAN>
function processRequest(){
if(req.readyState==4){
if(req.status==200){
parseMessages();
}else{
clearTable();
}
}
}
榪欓噷鎴戜滑閫氳繃榪斿洖鐨勭姸鎬?/SPAN>, 寰楀埌涓涓?/SPAN>XmlHttp鐨?/SPAN>readyState=4琛ㄧずservlet鐨勬搷浣滅粨鏉燂紝status
=200鍒欒〃紺?/SPAN>Http寰楀埌姝e父鐨勮繑鍥烇紝榪欐椂璋冪敤parseMessage()灝卞彲浠ュ鎵寰楀埌鐨?/SPAN>XmlHttp榪涜鎿嶄綔錛?/SPAN>
function parseMessages(){
var products = req.responseXML.getElementsByTagName("products")[0];
for (loop=0;loop<products.childNodes.length);loop++){
var product = products.childNodes[loop];
var productname = product.getElementsByTagName("pname")[0];
var productnumber = product.getElementsByTagName("pnumber")[0];
}
}
榪欓噷鎴戜滑灝卞湪javascipt閲屽氨寰楀埌浜嗘垜浠墍闇瑕佺殑璇嶇殑name鍜?/SPAN>number,鐒跺悗灝卞彧瑕佸湪javascript閲屽~鍏ヤ竴浜涚壒鏁堬紝渚胯兘寰堟柟渚跨殑瀹炵幇Google鐨?/SPAN>suggest.
鍏舵錛屾垜浠墍闇瑕佺殑灝變簨緙栧啓鎴戜滑鐜板湪鐨?/SPAN>LuceneSearch鐨?/SPAN>servlet. 榪欓噷鍥犱負閫氳繃get鏂瑰紡浼犻掞紝榪欎笉瀵逛簬寮鍙?/SPAN>j2ee鐨勭▼搴忓憳鏉ヨ錛屽氨鏄皬鑿滀竴紕燂紝鎴戜滑鍙瀹氫箟doGet(req, res)灝辮兘鍙互浜嗗疄鐜頒簡銆備粠榪欓噷鎴戜滑寰楀埌浜?/SPAN>Text鏂囨湰妗嗛噷鐨勫瓧絎︿覆鍊箋?/SPAN>
public class LuceneSearch extends HttpServlet{
public void doGet(HttpServletRequest request, HttpServletResponse response)
throws IOException, ServletException {
String targetId = request.getParameter("id");
}
}
鐒跺悗鎴戜滑闇瑕佸榪欎簺瀛楃涓茶繘琛屾竻鐞嗭紝鍘繪帀浜涙棤鏁堢殑絎﹀彿錛岀劧鍚庢妸澶氫綑絀烘牸鍚堝茍錛屾垚涓轟竴縐嶇湡姝g殑闇瑕佺殑瀛楃涓詫紝鐒跺悗鎴戜滑闇瑕佺敤Lucene鏉ヨ繘琛屾悳绱紝鍏堟妸Document鎶婃暟鎹粠鏁版嵁搴撻噷璇誨嚭鏉ワ紝鐒跺悗鍒舵垚Index銆傜劧鍚庣敤Search鏉ヨ繘琛屾悳绱紝榪欓噷Lucene鎻愪緵浜嗗緢濂界殑鎼滅儲鏂瑰紡錛屾悳绱㈠垎涓ょ鏂瑰紡錛屼竴縐嶆槸鍗曚釜鍗曡瘝錛岃繖涓氨姣旇緝濂藉姙錛?/SPAN>Lucene 鎻愪緵浜嗗紑澶村尮閰嶇殑鏂規硶PrefixQuery(), 鐩存帴濂楃敤灝卞彲浠ヤ簡
PrefixQuery query = new PrefixQuery(new Term("keyword", targetId));
IndexSearcher searcher = new IndexSearcher(directory);
Hits hits = searcher.search(query,sort);
for(int i=0; i<hits.length();i++){
sb.append("<product>");
sb.append("<pname>"+hits.doc(i).get("keyword")+"</pname>");
sb.append("<pnumber>"+hits.doc(i).get("number")+"</pnumber>");
sb.append("</product>");
}
榪欐牱鎴戜滑灝辨妸鎼滅儲鍒扮殑璇嶅拰鏁伴噺閮芥斁榪?/SPAN>Xml閲屼簡榪欐牱灝卞嚭鏉ヤ簡銆?/SPAN>
鎴戜滑榪樺彲浠ユ敞鎰忓埌濡傛灉鎵闇瑕佺殑璇嶅茍涓嶅湪寮澶翠篃鑳藉緱鍒板疄鐜般?/SPAN>
瀵逛簬璇嶇粍灝辨瘮杈冭垂灝斤紝鍥犱負棣栧厛瑕佷繚璇佸墠闈㈣瘝鐨勪綅緗э紝鍙互浠繪剰鏀劇疆錛屾渶鍚庝竴涓瘝鍒欏繀欏諱互寮澶翠負鍩哄噯榪涜妯$硦鏌ユ壘錛岃繖鏍鋒墠鑳藉疄鐜板叾鍔熻兘錛岃繕濂?/SPAN>Lucene榪樻槸鑰冭檻鍒頒簡榪欑偣錛屾湁涓?/SPAN>PhrasePrefixQuery()鐨勬柟娉曪紝紼嶇◢鍔犱互鏀硅繘渚垮彲浠ュ疄鐜幫紝
//棣栧厛瑕佹妸璇嶇粍鐢?/SPAN>split浠ョ┖鏍煎垎寮
String[] targetIdArray = targetId.split(" ");
PhrasePrefixQuery query = new PhrasePrefixQuery();
for(int i=0; i<targetIdArray.length-1;i++){
query.add(new Term("keyword",targetIdArray[i]));
}
query.setSlop(4); //璁劇疆璇嶅墠鍚庝綅緗Щ鍔ㄨ寖鍥淬?/SPAN>
LinkedList termsWithPrefix = new LinkedList();
IndexReader ir = IndexReader.open(directory);
TermEnum te = ir.terms(new Term("keyword", targetIdArray[targetIdArray.length-1]));
do {
if (te.term().text().startsWith(targetIdArray[targetIdArray.length-1])) {
termsWithPrefix.add(te.term());
}
} while (te.next());
榪欐牱鎴戜滑鍏堝緱鍒版渶鍚庝竴涓崟璇嶄負寮澶寸殑璇嶏紝鐒跺悗鍔犲埌PrasePrefixQuery閲?/SPAN>
query.add((Term[])termsWithPrefix.toArray(new Term[0]));
Hits hits;
hits = searcher.search(query, sort);
for(int i=0; i<(hits.length()>20?20:hits.length());i++){
sb.append("<product>");
sb.append("<pname>"+hits.doc(i).get("keyword")+"</pname>");
sb.append("<pnumber>"+hits.doc(i).get("popularity")+"</pnumber>");
sb.append("</product>");
}
榪欐牱鎴戜滑灝卞彲浠ュ緱鍒版垜浠墍闇瑕佺殑璇嶇粍浜嗐傚鍥炬墍紺猴紝寰堟柟渚垮惂錛岃繖閲屽氨鍩烘湰瀹屾垚浜?/SPAN>google
鎵浠h〃鐨?/SPAN>suggest鍔熻兘錛屽綋鐒訛紝javascript閲岄潰榪樻湁涓浜涗笂涓嬮敭錛岄紶鏍囩Щ鍔ㄤ簨浠剁殑瑙﹀彂錛屽姞鍦ㄤ竴璧峰氨浼氭妸鎴戜滑鐨勭綉欏靛紕寰楀緢瀹岀編浜嗐備絾榪欎簺閮戒笉鏄噸鐐癸紝鎴戜滑涓昏鏄闂ㄦ埛緗戠珯鍔熻兘鐨勫疄鐜幫紝濡傛灉鏈夐棶棰樺拰寤鴻錛屽彲浠ョ粰鎴戠暀璦錛岃阿璋€?/SPAN>