锘??xml version="1.0" encoding="utf-8" standalone="yes"?>国产亚洲精品看片在线观看,亚洲av无码无在线观看红杏,久久精品国产69国产精品亚洲http://www.tkk7.com/rain1102/category/37646.html<br/><font color="green" style="font-family: 鍗庢枃琛屾シ;font-size:16px;">瀛愭洶錛氬嵄閭︿笉鍏ワ紝涔遍偊涓嶅眳銆傚ぉ涓嬫湁閬撳垯瑙侊紝鏃犻亾鍒欓殣銆?lt;/font><font color="#3C1435"></font>zh-cnSun, 09 Aug 2009 17:08:31 GMTSun, 09 Aug 2009 17:08:31 GMT60褰撳墠鍑犱釜涓昏鐨凩ucene涓枃鍒嗚瘝鍣ㄧ殑姣旇緝銆愯漿杞姐?/title><link>http://www.tkk7.com/rain1102/archive/2009/08/09/290409.html</link><dc:creator>Eric.Zhou</dc:creator><author>Eric.Zhou</author><pubDate>Sun, 09 Aug 2009 02:15:00 GMT</pubDate><guid>http://www.tkk7.com/rain1102/archive/2009/08/09/290409.html</guid><wfw:comment>http://www.tkk7.com/rain1102/comments/290409.html</wfw:comment><comments>http://www.tkk7.com/rain1102/archive/2009/08/09/290409.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.tkk7.com/rain1102/comments/commentRss/290409.html</wfw:commentRss><trackback:ping>http://www.tkk7.com/rain1102/services/trackbacks/290409.html</trackback:ping><description><![CDATA[杞澆鍦板潃錛歨ttp://www.javaeye.com/news/9637<br /> <p><strong>1. 鍩烘湰浠嬬粛錛?/strong></p> <p><a target="_blank">paoding</a> 錛歀ucene涓枃鍒嗚瘝“搴栦竵瑙g墰” Paoding Analysis<br /> <a target="_blank">imdict</a> 錛歩mdict鏅鴻兘璇嶅吀鎵閲囩敤鐨勬櫤鑳戒腑鏂囧垎璇嶇▼搴?br /> <a target="_blank">mmseg4j</a> 錛?鐢?Chih-Hao Tsai 鐨?<a target="_blank">MMSeg 綆楁硶</a> 瀹炵幇鐨勪腑鏂囧垎璇嶅櫒<br /> <a target="_blank">ik</a> 錛氶噰鐢ㄤ簡鐗規湁鐨?#8220;姝e悜榪唬鏈緇嗙矑搴﹀垏鍒嗙畻娉?#8220;錛屽瀛愬鐞嗗櫒鍒嗘瀽妯″紡</p> <p> </p> <p> </p> <p><strong>2. 寮鍙戣呭強寮鍙戞椿璺冨害錛?/strong></p> <p><a target="_blank">paoding</a> 錛?a style="white-space: nowrap" target="_blank">qieqie.wang</a>錛?google code 涓婃渶鍚庝竴嬈′唬鐮佹彁浜わ細2008-06-12錛宻vn 鐗堟湰鍙?132<br /> <a target="_blank">imdict</a> 錛?a target="_blank">XiaoPingGao</a>錛?榪涘叆浜?lucene contribute錛宭ucene trunk 涓?contrib/analyzers/smartcn/ 鏈鍚庝竴嬈℃彁浜わ細2009-07-24錛?br /> <a target="_blank">mmseg4j</a> 錛?a style="white-space: nowrap" target="_blank">chenlb2008</a>錛実oogle code 涓?2009-08-03 錛堟槰澶╋級錛岀増鏈彿 57錛宭og涓猴細mmseg4j-1.7 鍒涘緩鍒嗘敮<br /> <a target="_blank">ik</a> 錛?a style="white-space: nowrap" target="_blank">linliangyi2005</a>錛実oogle code 涓?2009-07-31錛岀増鏈彿 41</p> <p> </p> <p> </p> <p><strong>3. 鐢ㄦ埛鑷畾涔夎瘝搴擄細</strong></p> <p><a target="_blank">paoding</a> 錛氭敮鎸佷笉闄愬埗涓暟鐨勭敤鎴瘋嚜瀹氫箟璇嶅簱錛岀函鏂囨湰鏍煎紡錛屼竴琛屼竴璇嶏紝浣跨敤鍚庡彴綰跨▼媯嫻嬭瘝搴撶殑鏇存柊錛岃嚜鍔ㄧ紪璇戞洿鏂拌繃鐨勮瘝搴撳埌浜岃繘鍒剁増鏈紝騫跺姞杞?br /> <a target="_blank">imdict</a> 錛氭殏鏃朵笉鏀寔鐢ㄦ埛鑷畾涔夎瘝搴撱備絾 鍘熺増 <a title="涓闄腑鏂囧垎璇嶇郴緇? target="_blank">ICTCLAS</a> 鏀寔銆傛敮鎸佺敤鎴瘋嚜瀹氫箟 stop words<br /> <a target="_blank">mmseg4j</a> 錛氳嚜甯ogou璇嶅簱錛屾敮鎸佸悕涓?wordsxxx.dic錛?utf8鏂囨湰鏍煎紡鐨勭敤鎴瘋嚜瀹氫箟璇嶅簱錛屼竴琛屼竴璇嶃備笉鏀寔鑷姩媯嫻嬨?-Dmmseg.dic.path<br /> <a target="_blank">ik</a> 錛?鏀寔api綰х殑鐢ㄦ埛璇嶅簱鍔犺澆錛屽拰閰嶇疆綰х殑璇嶅簱鏂囦歡鎸囧畾錛屾棤 BOM 鐨?UTF-8 緙栫爜錛孿r\n 鍒嗗壊銆備笉鏀寔鑷姩媯嫻嬨?/p> <p> </p> <p> </p> <p><strong>4. 閫熷害錛堝熀浜庡畼鏂逛粙緇嶏紝闈炶嚜宸辨祴璇曪級</strong></p> <p><a target="_blank">paoding</a> 錛氬湪PIII 1G鍐呭瓨涓漢鏈哄櫒涓婏紝<strong>1縐?/strong> 鍙噯紜垎璇?<strong>100涓?/strong> 姹夊瓧<br /> <a target="_blank">imdict</a> 錛?strong>483.64</strong> (瀛楄妭/縐?錛?strong>259517</strong>(姹夊瓧/縐?<br /> <a target="_blank">mmseg4j</a> 錛?complex 1200kb/s宸﹀彸, simple 1900kb/s宸﹀彸<br /> <a target="_blank">ik</a> 錛氬叿鏈?0涓囧瓧/縐掔殑楂橀熷鐞嗚兘鍔?/p> <p> </p> <p> </p> <p><strong>5. 綆楁硶鍜屼唬鐮佸鏉傚害</strong></p> <p><a target="_blank">paoding</a> 錛歴vn src 鐩綍涓鍏?.3M錛?涓猵roperties鏂囦歡錛?8涓猨ava鏂囦歡錛?895 琛屻備嬌鐢ㄤ笉鐢ㄧ殑 Knife 鍒囦笉鍚岀被鍨嬬殑嫻侊紝涓嶇畻寰堝鏉傘?br /> <a target="_blank">imdict</a> 錛氳瘝搴?6.7M錛堣繖涓瘝搴撴槸蹇呴』鐨勶級錛宻rc 鐩綍 152k錛?0涓猨ava鏂囦歡錛?399琛屻備嬌鐢?<a title="涓闄腑鏂囧垎璇嶇郴緇? target="_blank">ICTCLAS</a> HHMM闅愰┈灝旂澶ā鍨嬶紝“鍒╃敤澶ч噺璇枡搴撶殑璁粌鏉ョ粺璁℃眽璇瘝姹囩殑璇嶉鍜岃煩杞鐜囷紝浠庤屾牴鎹繖浜涚粺璁$粨鏋滃鏁翠釜姹夎鍙ュ瓙璁$畻鏈浼肩劧(likelihood)鐨勫垏鍒?#8221;<br /> <a target="_blank">mmseg4j</a> 錛?svn src 鐩綍涓鍏?132k錛?3涓猨ava鏂囦歡錛?089琛屻?a target="_blank">MMSeg 綆楁硶</a> 錛屾湁鐐瑰鏉傘?br /> <a target="_blank">ik</a> 錛?svn src 鐩綍涓鍏?.6M(璇嶅吀鏂囦歡涔熷湪閲岄潰)錛?2涓猨ava鏂囦歡錛?217琛屻傚瀛愬鐞嗗櫒鍒嗘瀽錛岃窡paoding綾諱技錛屾涔夊垎鏋愮畻娉曡繕娌℃湁寮勬槑鐧姐?/p> <p> </p> <p> </p> <p><strong>6. 鏂囨。</strong></p> <p><a target="_blank">paoding</a> 錛氬嚑涔庢棤銆備唬鐮侀噷鏈変竴浜涙敞閲婏紝浣嗗洜涓哄疄鐜版瘮杈冨鏉傦紝璇諱唬鐮佽繕鏄湁涓浜涢毦搴︾殑銆?br /> <a target="_blank">imdict</a> 錛?鍑犱箮鏃犮?<a title="涓闄腑鏂囧垎璇嶇郴緇? target="_blank">ICTCLAS</a> 涔熸病鏈夎緇嗙殑鏂囨。錛孒HMM闅愰┈灝旂澶ā鍨嬬殑鏁板鎬уお寮猴紝涓嶅お濂界悊瑙c?br /> <a target="_blank">mmseg4j</a> 錛?<a target="_blank">MMSeg 綆楁硶</a> 鏄嫳鏂囩殑錛屼絾鍘熺悊姣旇緝綆鍗曘傚疄鐜頒篃姣旇緝娓呮櫚銆?br /> <a target="_blank">ik</a> 錛?鏈変竴涓猵df浣跨敤鎵嬪唽錛岄噷闈㈡湁浣跨敤紺轟緥鍜岄厤緗鏄庛?/p> <p> </p> <p> </p> <p><strong>7. 鍏跺畠</strong></p> <p><a target="_blank">paoding</a> 錛氬紩鍏ラ殣鍠伙紝璁捐姣旇緝鍚堢悊銆俿earch 1.0 鐗堟湰灝辯敤鐨勮繖涓備富瑕佷紭鍔垮湪浜庡師鐢熸敮鎸佽瘝搴撴洿鏂版嫻嬨備富瑕佸姡鍔夸負浣滆呭凡緇忎笉鏇存柊鐢氳嚦涓嶇淮鎶や簡銆?br /> <a target="_blank">imdict</a> 錛氳繘鍏ヤ簡 lucene trunk錛屽師鐗?ictclas 鍦ㄥ悇縐嶈瘎嫻嬩腑閮芥湁涓嶉敊鐨勮〃鐜幫紝鏈夊潥瀹炵殑鐞嗚鍩虹錛屼笉鏄釜浜哄北瀵ㄣ傜己鐐逛負鏆傛椂涓嶆敮鎸佺敤鎴瘋瘝搴撱?br /> <a target="_blank">mmseg4j</a> 錛?鍦╟omplex鍩虹涓婂疄鐜頒簡鏈澶氬垎璇?max-word)錛屼絾鏄繕涓嶆垚鐔燂紝榪樻湁寰堝闇瑕佹敼榪涚殑鍦版柟銆?br /> <a target="_blank">ik</a> 錛?nbsp; 閽堝Lucene鍏ㄦ枃媯绱紭鍖栫殑鏌ヨ鍒嗘瀽鍣↖KQueryParser</p> <p> </p> <p> </p> <p><strong>8. 緇撹</strong></p> <p>涓漢瑙夊緱錛屽彲浠ュ湪 mmseg4j 鍜?paoding 涓変竴涓傚叧浜庤繖涓や釜鍒嗚瘝鏁堟灉鐨勫姣旓紝鍙互鍙傝冿細</p> <p><a title="mmseg4j涓巔aoding鍒嗚瘝鏁堟灉姣旇緝" target="_blank">http://blog.chenlb.com/2009/04/mmseg4j-max-word-segment-compare-with-paoding-in-effect.html</a></p> <p>鎴栬呰嚜宸卞啀鍖呰涓涓嬶紝灝?paoding 鐨勮瘝搴撴洿鏂版嫻嬪仛涓涓崟鐙殑妯″潡瀹炵幇錛岀劧鍚庡氨鍙互鍦ㄦ墍鏈夊熀浜庤瘝搴撶殑鍒嗚瘝綆楁硶涔嬮棿鏃犵紳鍒囨崲浜嗐?/p> <p> </p> <p> </p> <p><strong>ps</strong>錛屽涓嶅悓鐨?field 浣跨敤涓嶅悓鐨勫垎璇嶅櫒鏄竴涓彲浠ヨ冭檻鐨勬柟娉曘傛瘮濡?tag 瀛楁錛屽氨搴旇浣跨敤涓涓渶綆鍗曠殑鍒嗚瘝鍣紝鎸夌┖鏍煎垎璇嶅氨鍙互浜嗐?/p><img src ="http://www.tkk7.com/rain1102/aggbug/290409.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.tkk7.com/rain1102/" target="_blank">Eric.Zhou</a> 2009-08-09 10:15 <a href="http://www.tkk7.com/rain1102/archive/2009/08/09/290409.html#Feedback" target="_blank" style="text-decoration:none;">鍙戣〃璇勮</a></div>]]></description></item><item><title>Lucene鍏ㄦ枃媯绱㈠皬璇?/title><link>http://www.tkk7.com/rain1102/archive/2007/01/29/96436.html</link><dc:creator>Eric.Zhou</dc:creator><author>Eric.Zhou</author><pubDate>Mon, 29 Jan 2007 01:57:00 GMT</pubDate><guid>http://www.tkk7.com/rain1102/archive/2007/01/29/96436.html</guid><wfw:comment>http://www.tkk7.com/rain1102/comments/96436.html</wfw:comment><comments>http://www.tkk7.com/rain1102/archive/2007/01/29/96436.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.tkk7.com/rain1102/comments/commentRss/96436.html</wfw:commentRss><trackback:ping>http://www.tkk7.com/rain1102/services/trackbacks/96436.html</trackback:ping><description><![CDATA[<p> <strong> <font color="#006400">HTML 瑙f瀽鍣?/font> </strong> <br /> <strong> <font color="#000000">package com.rain.util;</font> </strong> </p> <p> <strong> <font color="#000000">import <a title="Java鐖卞ソ鑰? href="http://www.tkk7.com/rain1102" >Java</a>.io.FileInputStream;<br />import <a title="Java鐖卞ソ鑰? href="http://www.tkk7.com/rain1102" >Java</a>.io.FileNotFoundException;<br />import <a title="Java鐖卞ソ鑰? href="http://www.tkk7.com/rain1102" >Java</a>.io.IOException;<br />import <a title="Java鐖卞ソ鑰? href="http://www.tkk7.com/rain1102" >Java</a>.io.InputStream;<br />import <a title="Java鐖卞ソ鑰? href="http://www.tkk7.com/rain1102" >Java</a>.io.InputStreamReader;<br />import <a title="Java鐖卞ソ鑰? href="http://www.tkk7.com/rain1102" >Java</a>.io.Reader;<br />import <a title="Java鐖卞ソ鑰? href="http://www.tkk7.com/rain1102" >Java</a>.io.UnsupportedEncodingException;</font> </strong> </p> <p> <strong> <font color="#000000">import org.apache.lucene.demo.html.HTMLParser;</font> </strong> </p> <p> <strong> <font color="#000000">public class HTMLDocParser {</font> </strong> </p> <p> <font color="#000000"> <strong> private String htmlPath;<br /> private HTMLParser htmlParser;<br /> <br /> public HTMLDocParser(String htmlPath){<br />  this.htmlPath=htmlPath;<br />  initHtmlParser();<br /> }<br /> public void initHtmlParser(){<br />  InputStream inputStream=null;<br />  try{<br />   inputStream=new FileInputStream(htmlPath);<br />  }catch(FileNotFoundException e){<br />   e.printStackTrace();<br />  }<br />  if(null!=inputStream){<br />   try{<br />    htmlParser=new HTMLParser(new InputStreamReader(inputStream,"utf-8"));<br />   }catch(UnsupportedEncodingException e){<br />    e.printStackTrace();<br />   }<br />  }<br /> }<br /> public String getTitle(){<br />  if(null!=htmlParser){<br />   try{<br />    return htmlParser.getTitle();<br />   }catch(IOException e){<br />    e.printStackTrace();<br />   }catch(InterruptedException e){<br />    e.printStackTrace();<br />   }<br />  }<br />  return "";<br /> }<br /> public Reader getContent(){<br />  if(null!=htmlParser){<br />   try{<br />    return htmlParser.getReader();<br />   }catch(IOException e){<br />    e.printStackTrace();<br />   }<br />  }<br />  return null;<br /> }<br /> public String getPath(){<br />  return this.htmlPath;<br /> }<br />}<br /></strong> </font> </p> <p> </p> <hr /> <p> </p> <p> <font style="BACKGROUND-COLOR: #ffffff" color="#006400">鎻忚堪鎼滅儲緇撴灉鐨勭粨鏋勫疄浣揃ean<br /><font color="#000000">package com.rain.search;</font></font> </p> <p> <font style="BACKGROUND-COLOR: #ffffff" color="#000000">public class SearchResultBean {<br />    private String htmlPath;<br />    <br />    private String htmlTitle;</font> </p> <p> <font style="BACKGROUND-COLOR: #ffffff" color="#000000"> public String getHtmlPath() {<br />  return htmlPath;<br /> }</font> </p> <p> <font style="BACKGROUND-COLOR: #ffffff" color="#000000"> public void setHtmlPath(String htmlPath) {<br />  this.htmlPath = htmlPath;<br /> }</font> </p> <p> <font style="BACKGROUND-COLOR: #ffffff" color="#000000"> public String getHtmlTitle() {<br />  return htmlTitle;<br /> }</font> </p> <p> <font style="BACKGROUND-COLOR: #ffffff" color="#006400"> <font color="#000000"> public void setHtmlTitle(String htmlTitle) {<br />  this.htmlTitle = htmlTitle;<br /> }<br />}</font> <br /> </font> </p> <p> </p> <hr /> <p> </p> <p> <font color="#000000"> <font color="#006400">绱㈠紩瀛愮郴緇熺殑瀹炵幇</font> <br /> <br />package com.rain.index;</font> </p> <p> <font color="#000000">import <a title="Java鐖卞ソ鑰? href="http://www.tkk7.com/rain1102" >Java</a>.io.File;<br />import <a title="Java鐖卞ソ鑰? href="http://www.tkk7.com/rain1102" >Java</a>.io.IOException;<br />import <a title="Java鐖卞ソ鑰? href="http://www.tkk7.com/rain1102" >Java</a>.io.Reader;</font> </p> <p> <font color="#000000">import org.apache.lucene.analysis.Analyzer;<br />import org.apache.lucene.analysis.standard.StandardAnalyzer;<br />import org.apache.lucene.document.Document;<br />import org.apache.lucene.index.IndexWriter;<br />import org.apache.lucene.store.Directory;<br />import org.apache.lucene.store.FSDirectory;<br />import org.apache.lucene.document.Field;</font> </p> <p> <font color="#000000">import com.rain.util.HTMLDocParser;</font> </p> <p> <font color="#000000">public class IndexManager {<br /> <br /> //the directory that stores HTML files<br /> private final String dataDir="E:\\dataDir";<br /> <br /> //the directory that is used to store a Lucene index<br /> private final String indexDir="E:\\indexDir";<br /> <br /> public boolean creatIndex()throws IOException{<br />  if(true==inIndexExist()){<br />   return true;<br />  }<br />  File dir=new File(dataDir);<br />  if(!dir.exists()){<br />   return false;<br />  }<br />  File[] htmls=dir.listFiles();<br />  Directory fsDirectory=FSDirectory.getDirectory(indexDir,true);<br />  Analyzer analyzer=new StandardAnalyzer();<br />  IndexWriter indexWriter=new IndexWriter(fsDirectory,analyzer,true);<br />  for(int i=0;i<htmls.length;i++){<br />   String htmlPath=htmls[i].getAbsolutePath();<br />   if(htmlPath.endsWith(".html")||htmlPath.endsWith("htm")){<br />    addDocument(htmlPath,indexWriter);<br />   }<br />  }<br />  indexWriter.optimize();<br />  indexWriter.close();<br />  return true;<br /> }<br /> <br /> public void addDocument(String htmlPath,IndexWriter indexWriter){<br />  HTMLDocParser htmlParser=new HTMLDocParser(htmlPath);<br />  String path=htmlParser.getPath();<br />  String title=htmlParser.getTitle();<br />  Reader content=htmlParser.getContent();<br />  <br />  Document document=new Document();<br />  document.add(new Field("path",path,Field.Store.YES,Field.Index.NO));<br />  document.add(new Field("title",title,Field.Store.YES,Field.Index.TOKENIZED));<br />     document.add(new Field("content",content));<br />     try{<br />      indexWriter.addDocument(document);<br />     }catch(IOException e){<br />      e.printStackTrace();<br />     }<br /> }<br /> public String getDataDir(){<br />  return this.dataDir;<br /> }<br /> <br /> public String getIndexDir(){<br />  return this.indexDir;<br /> }<br /> <br /> public boolean inIndexExist(){<br />  File directory=new File(indexDir);<br />  if(0<directory.listFiles().length){<br />   return true;<br />  }else{<br />   return false;<br />  }<br /> }<br />}<br /></font> </p> <p> </p> <hr /> <p> </p> <p>鎼滅儲鍔熻兘鐨勫疄鐜?br /><font color="#000000">package com.rain.search;</font></p> <p> <font color="#000000">import <a title="Java鐖卞ソ鑰? href="http://www.tkk7.com/rain1102" >Java</a>.io.IOException;<br />import <a title="Java鐖卞ソ鑰? href="http://www.tkk7.com/rain1102" >Java</a>.util.ArrayList;<br />import <a title="Java鐖卞ソ鑰? href="http://www.tkk7.com/rain1102" >Java</a>.util.List;</font> </p> <p> <font color="#000000">import org.apache.lucene.analysis.Analyzer;<br />import org.apache.lucene.analysis.standard.StandardAnalyzer;<br />import org.apache.lucene.queryParser.ParseException;<br />import org.apache.lucene.queryParser.QueryParser;<br />import org.apache.lucene.search.Hits;<br />import org.apache.lucene.search.IndexSearcher;<br />import org.apache.lucene.search.Query;</font> </p> <p> <font color="#000000">import com.rain.index.IndexManager;</font> </p> <p> <font color="#000000">public class SearchManager {<br /> private String searchWord;<br /> private IndexManager indexManager;<br /> private Analyzer analyzer;<br /> <br /> public SearchManager(String searchWord){<br />  this.searchWord=searchWord;<br />  this.indexManager=new IndexManager();<br />  this.analyzer=new StandardAnalyzer();<br /> }<br /> <br /> /**<br />     * do search<br />     */<br /> public List search(){<br />  List searchResult=new ArrayList();<br />  if(false==indexManager.inIndexExist()){<br />   try{<br />    if(false==indexManager.creatIndex()){<br />     return searchResult;<br />    }<br />   }catch(IOException e){<br />    e.printStackTrace();<br />    return searchResult;<br />   }<br />  }<br />  IndexSearcher indexSearcher=null;<br />  try{<br />   indexSearcher=new IndexSearcher(indexManager.getIndexDir());<br />  }catch(IOException e){<br />   e.printStackTrace();<br />  }<br />  QueryParser queryParser=new QueryParser("content",analyzer);<br />  Query query=null;<br />  try{<br />   query=queryParser.parse(searchWord);<br />  }catch(ParseException e){<br />   e.printStackTrace();<br />  }<br />  if(null!=query&&null!=indexSearcher){<br />   try{<br />    Hits hits=indexSearcher.search(query);<br />    for(int i=0;i<hits.length();i++){<br />     SearchResultBean resultBean=new SearchResultBean();<br />     resultBean.setHtmlPath(hits.doc(i).get("path"));<br />     resultBean.setHtmlTitle(hits.doc(i).get("title"));<br />     searchResult.add(resultBean);<br />    }<br />   }catch(IOException e){<br />    e.printStackTrace();<br />   }<br />  }<br />   return searchResult;<br /> }</font> </p> <p> <font color="#000000">}<br /><p></p><hr /></font> </p> <p> <font color="#006400">璇鋒眰綆$悊鍣ㄧ殑瀹炵幇</font> <br /> <br /> <font color="#000000">package com.rain.servlet;</font> </p> <p> <font color="#000000">import <a title="Java鐖卞ソ鑰? href="http://www.tkk7.com/rain1102" >Java</a>.io.IOException;<br />import <a title="Java鐖卞ソ鑰? href="http://www.tkk7.com/rain1102" >Java</a>.util.List;</font> </p> <p> <font color="#000000">import javax.servlet.RequestDispatcher;<br />import javax.servlet.ServletException;<br />import javax.servlet.http.HttpServlet;<br />import javax.servlet.http.HttpServletRequest;<br />import javax.servlet.http.HttpServletResponse;</font> </p> <p> <font color="#000000">import com.rain.search.SearchManager;</font> </p> <p> <font color="#000000">/**<br /> * @author zhourui<br /> * 2007-1-28<br /> */<br />public class SearchController extends HttpServlet {<br /> private static final long serialVersionUID=1L;<br /> <br /> /* (non-Javadoc)<br />  * @see javax.servlet.http.HttpServlet#doPost(javax.servlet.http.HttpServletRequest, javax.servlet.http.HttpServletResponse)<br />  */<br /> @Override<br /> protected void doPost(HttpServletRequest arg0, HttpServletResponse arg1) throws ServletException, IOException {<br />  // TODO Auto-generated method stub<br />  String searchWord=arg0.getParameter("searchWord");<br />  SearchManager searchManager=new SearchManager(searchWord);<br />  List searchResult=null;<br />  searchResult=searchManager.search();<br />  RequestDispatcher dispatcher=arg0.getRequestDispatcher("search.jsp");<br />  arg0.setAttribute("searchResult",searchResult);<br />        dispatcher.forward(arg0, arg1);<br /> }<br /> <br />}</font> <br /> <br /> </p> <hr /> <br /> <strong>鍚慦eb鏈嶅姟鍣ㄦ彁浜ゆ悳绱㈣姹?/strong> <br /> <strong><form action="SearchController" method="post"><br />      <table><br />        <tr><br />          <td colspan="3"><br />            SearchWord:<input type="text" name="searchWord" id="searchWord" size="40"><br />            <input id="doSearch" type="submit" value="search"><br />          </td><br />        </tr><br />      </table><br />    </form><br />鏄劇ず鎼滅儲緇撴灉<br /> <table class="result"><br />      <%<br />        List searchResult=(List)request.getAttribute("searchResult");<br />        int resultCount=0;<br />        if(null!=searchResult){<br />         resultCount=searchResult.size();<br />        }<br />        for(int i=0;i<resultCount;i++){<br />         SearchResultBean resultBean=(SearchResultBean)searchResult.get(i);<br />         String title=resultBean.getHtmlTitle();<br />         String path=resultBean.getHtmlPath();<br />         %><br />         <tr><br />           <td class="title"><h3><a href="<%=path%>"><%=title%></a></h3></td><br />         </tr><br />         <%<br />        }<br />      %><br />    </table></strong><img src ="http://www.tkk7.com/rain1102/aggbug/96436.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.tkk7.com/rain1102/" target="_blank">Eric.Zhou</a> 2007-01-29 09:57 <a href="http://www.tkk7.com/rain1102/archive/2007/01/29/96436.html#Feedback" target="_blank" style="text-decoration:none;">鍙戣〃璇勮</a></div>]]></description></item><item><title>Lucene鍩烘湰浣跨敤浠嬬粛http://www.tkk7.com/rain1102/archive/2007/01/28/96356.htmlEric.ZhouEric.ZhouSun, 28 Jan 2007 02:38:00 GMThttp://www.tkk7.com/rain1102/archive/2007/01/28/96356.htmlhttp://www.tkk7.com/rain1102/comments/96356.htmlhttp://www.tkk7.com/rain1102/archive/2007/01/28/96356.html#Feedback0http://www.tkk7.com/rain1102/comments/commentRss/96356.htmlhttp://www.tkk7.com/rain1102/services/trackbacks/96356.html涓.  姒傝堪

闅忕潃緋葷粺淇℃伅鐨勮秺鏉ヨ秺澶氾紝鎬庝箞鏍蜂粠榪欎簺淇℃伅嫻鋒磱涓崬璧瘋嚜宸辨兂瑕佺殑閭d竴鏍歸拡灝卞彉寰楅潪甯擱噸瑕佷簡錛屽叏鏂囨绱㈡槸閫氬父鐢ㄤ簬瑙e喅姝ょ被闂鐨勬柟妗堬紝鑰孡ucene鍒欎負瀹炵幇鍏ㄦ枃媯绱㈢殑宸ュ叿錛屼換浣曞簲鐢ㄩ兘鍙氳繃宓屽叆瀹冩潵瀹炵幇鍏ㄦ枃媯绱€?/p>

浜?  鐜鎼緩

浠巐ucene.apache.org涓婁笅杞芥渶鏂扮増鏈殑lucene.jar錛屽皢姝ar浣滀負欏圭洰鐨刡uild path錛岄偅涔堝湪欏圭洰涓氨鍙互鐩存帴浣跨敤lucene浜嗐?/p>

涓?  浣跨敤璇存槑

3.1.       鍩烘湰姒傚康

榪欓噷浠嬬粛鐨勪富瑕佷負鍦ㄤ嬌鐢ㄤ腑緇忓父紕板埌涓浜涙蹇碉紝浠ュぇ瀹墮兘姣旇緝鐔熸倝鐨勬暟鎹簱鏉ヨ繘琛岀被姣旂殑璁茶В錛屼嬌鐢↙ucene榪涜鍏ㄦ枃媯绱㈢殑榪囩▼鏈夌偣綾諱技鏁版嵁搴撶殑榪欎釜榪囩▼錛宼able---à鏌ヨ鐩稿簲鐨勫瓧孌墊垨鏌ヨ鏉′歡----à榪斿洖鐩稿簲鐨勮褰曪紝棣栧厛鏄疘ndexWriter錛岄氳繃瀹冨緩绔嬬浉搴旂殑绱㈠紩琛紝鐩稿綋浜庢暟鎹簱涓殑table錛屽湪鏋勫緩姝ょ儲寮曡〃鏃墮渶鎸囧畾鐨勪負璇ョ儲寮曡〃閲囩敤浣曠鏂瑰紡榪涜鏋勫緩錛屼篃灝辨槸璇村浜庡叾涓殑璁板綍鐨勫瓧孌典互浠涔堟柟寮忔潵榪涜鏍煎紡鐨勫垝鍒嗭紝榪欎釜鍦↙ucene涓О涓篈nalyzer錛孡ucene鎻愪緵浜嗗嚑縐嶇幆澧冧笅浣跨敤鐨凙nalyzer錛歋impleAnalyzer銆丼tandardAnalyzer銆丟ermanAnalyzer絳夛紝鍏朵腑StandardAnalyzer鏄粡甯鎬嬌鐢ㄧ殑錛屽洜涓哄畠鎻愪緵浜嗗浜庝腑鏂囩殑鏀寔錛屽湪琛ㄥ緩濂藉悗鎴戜滑灝遍渶瑕佸線閲岄潰鎻掑叆鐢ㄤ簬绱㈠紩鐨勮褰曪紝鍦↙ucene涓繖涓О涓篋ocument錛屾湁鐐圭被浼兼暟鎹簱涓璽able鐨勪竴琛岃褰曪紝璁板綍涓殑瀛楁鐨勬坊鍔犳柟娉曪紝鍦↙ucene涓О涓篎ield錛岃繖涓拰鏁版嵁搴撲腑鍩烘湰涓鏍鳳紝瀵逛簬Field Lucene鍒嗕負鍙绱㈠紩鐨勶紝鍙垏鍒嗙殑錛屼笉鍙鍒囧垎鐨勶紝涓嶅彲琚儲寮曠殑鍑犵緇勫悎綾誨瀷錛岄氳繃榪欏嚑涓厓绱犲熀鏈笂灝卞彲浠ュ緩绔嬭搗绱㈠紩浜嗐傚湪鏌ヨ鏃剁粡甯哥鍒扮殑涓哄彟澶栧嚑涓蹇碉紝棣栧厛鏄疩uery錛孡ucene鎻愪緵浜嗗嚑縐嶇粡甯稿彲浠ョ敤鍒扮殑Query錛歍ermQuery銆丮ultiTermQuery銆丅ooleanQuery銆乄ildcardQuery銆丳hraseQuery銆丳refixQuery銆丳hrasePrefixQuery銆丗uzzyQuery銆丷angeQuery銆丼panQuery錛孮uery鍏跺疄涔熷氨鏄寚瀵逛簬闇瑕佹煡璇㈢殑瀛楁閲囩敤浠涔堟牱鐨勬柟寮忚繘琛屾煡璇紝濡傛ā緋婃煡璇€佽涔夋煡璇€佺煭璇煡璇€佽寖鍥存煡璇€佺粍鍚堟煡璇㈢瓑錛岃繕鏈夊氨鏄疩ueryParser錛孮ueryParser鍙敤浜庡垱寤轟笉鍚岀殑Query錛岃繕鏈変竴涓狹ultiFieldQueryParser鏀寔瀵逛簬澶氫釜瀛楁榪涜鍚屼竴鍏抽敭瀛楃殑鏌ヨ錛孖ndexSearcher姒傚康鎸囩殑涓洪渶瑕佸浣曠洰褰曚笅鐨勭儲寮曟枃浠惰繘琛屼綍縐嶆柟寮忕殑鍒嗘瀽鐨勬煡璇紝鏈夌偣璞″鏁版嵁搴撶殑鍝绱㈠紩琛ㄨ繘琛屾煡璇㈠茍鎸変竴瀹氭柟寮忚繘琛岃褰曚腑瀛楁鐨勫垎瑙f煡璇㈢殑姒傚康錛岄氳繃IndexSearcher浠ュ強Query鍗沖彲鏌ヨ鍑洪渶瑕佺殑緇撴灉錛孡ucene榪斿洖鐨勪負Hits.閫氳繃閬嶅巻Hits鍙幏鍙栬繑鍥炵殑緇撴灉鐨凞ocument錛岄氳繃Document鍒欏彲鑾峰彇Field涓殑鐩稿叧淇℃伅浜嗐?br />

姣旇緝涓涓婰ucene鍜屾暟鎹簱錛?/p>

Lucene 鏁版嵁搴?/td>
绱㈠紩鏁版嵁婧愶細doc(field1,field2...) doc(field1,field2...)
\ indexer /
_____________
| Lucene Index|
--------------
/ searcher \
緇撴灉杈撳嚭錛欻its(doc(field1,field2) doc(field1...))
 绱㈠紩鏁版嵁婧愶細record(field1,field2...) record(field1..)
\ SQL: insert/
_____________
| DB Index |
-------------
/ SQL: select \
緇撴灉杈撳嚭錛歳esults(record(field1,field2..) record(field1...))
Document錛氫竴涓渶瑕佽繘琛岀儲寮曠殑“鍗曞厓”
涓涓狣ocument鐢卞涓瓧孌電粍鎴?/td>
Record錛氳褰曪紝鍖呭惈澶氫釜瀛楁
Field錛氬瓧孌?/td> Field錛氬瓧孌?/td>
Hits錛氭煡璇㈢粨鏋滈泦錛岀敱鍖歸厤鐨凞ocument緇勬垚 RecordSet錛氭煡璇㈢粨鏋滈泦錛岀敱澶氫釜Record緇勬垚

閫氳繃瀵逛簬涓婇潰鍦ㄥ緩绔嬬儲寮曞拰鍏ㄦ枃媯绱㈢殑鍩烘湰姒傚康鐨勪粙緇嶅笇鏈涜兘璁╀綘瀵筁ucene寤虹珛涓瀹氱殑浜嗚В銆?br />

闇瑕佺啛鎮夊嚑涓帴鍙o細
鍒嗘瀽鍣ˋnalyzer
        鍒嗘瀽鍣ㄤ富瑕佸伐浣滄槸絳涢夛紝涓孌墊枃妗h繘鏉ヤ互鍚庯紝緇忚繃瀹冿紝鍑哄幓鐨勬椂鍊欏彧鍓╀笅閭d簺鏈夌敤鐨勯儴鍒嗭紝鍏朵粬鍒欏墧闄ゃ傝岃繖涓垎鏋愬櫒涔熷彲浠ヨ嚜宸辨牴鎹渶瑕佽岀紪鍐欍?br />        org.apache.lucene.analysis.Analyzer錛氳繖鏄竴涓櫄鏋勭被錛屼互涓嬩袱涓熷彛鍧囩戶鎵垮畠鑰屾潵銆?/span>
        org.apache.lucene.analysis.SimpleAnalyzer錛氬垎鏋愬櫒錛屾敮鎸佹渶綆鍗曟媺涓佽璦銆?br />
        org.apache.lucene.analysis.standard.StandardAnalyzer錛氭爣鍑嗗垎鏋愬櫒錛岄櫎浜嗘媺涓佽璦榪樻敮鎸佷簹媧茶璦錛屽茍鍦ㄤ竴浜涘尮閰嶅姛鑳戒笂榪涜瀹屽杽銆傚湪榪欎釜鎺ュ彛涓繕鏈変竴涓緢閲嶈鐨勬瀯閫犲嚱鏁幫細StandardAnalyzer(String[] stopWords)錛屽彲浠ュ鍒嗘瀽鍣ㄥ畾涔変竴浜涗嬌鐢ㄨ瘝璇紝榪欎笉浠呭彲浠ュ厤闄ゆ绱竴浜涙棤鐢ㄤ俊鎭紝鑰屼笖榪樺彲浠ュ湪媯绱腑瀹氫箟紱佹鐨勬斂娌繪с侀潪娉曟х殑媯绱㈠叧閿瘝銆?/span>
IndexWriter
        IndexWriter鐨勬瀯閫犲嚱鏁版湁涓夌鎺ュ彛錛岄拡瀵圭洰褰旸irectory銆佹枃浠禙ile銆佹枃浠惰礬寰凷tring涓夌鎯呭喌銆?br />渚嬪IndexWriter(String path, Analyzer a, boolean create)錛宲ath涓烘枃浠惰礬寰勶紝a涓哄垎鏋愬櫒錛宑reate鏍囧織鏄惁閲嶅緩绱㈠紩錛坱rue錛氬緩绔嬫垨鑰呰鐩栧凡瀛樺湪鐨勭儲寮曪紝false錛氭墿灞曞凡瀛樺湪鐨勭儲寮曘傦級
       涓浜涢噸瑕佺殑鏂規硶錛?/span>

鎺ュ彛鍚??xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" /?>

澶囨敞

addDocument(Document doc)

绱㈠紩娣誨姞涓涓枃妗?o:p>

addIndexes(Directory[] dirs)

灝嗙洰褰曚腑宸插瓨鍦ㄧ儲寮曟坊鍔犲埌榪欎釜绱㈠紩

addIndexes(IndexReader[] readers)

灝嗘彁渚涚殑绱㈠紩娣誨姞鍒拌繖涓儲寮?o:p>

optimize()

鍚堝茍绱㈠紩騫朵紭鍖?o:p>

close()

鍏抽棴


       IndexWriter涓轟簡鍑忓皯澶ч噺鐨刬o緇存姢鎿嶄綔錛屽湪姣忓緱鍒頒竴瀹氶噺鐨勭儲寮曞悗寤虹珛鏂扮殑灝忕儲寮曟枃浠訛紙絎旇呮祴璇曠儲寮曟壒閲忕殑鏈灝忓崟浣嶄負10錛夛紝鐒跺悗鍐嶅畾鏈熷皢瀹冧滑鏁村悎鍒頒竴涓儲寮曟枃浠朵腑錛屽洜姝ゅ湪绱㈠紩緇撴潫鏃跺繀欏昏繘琛寃irter.optimize()錛屼互渚垮皢鎵鏈夌儲寮曞悎騫朵紭鍖栥?br />
org.apache.lucene.document
 浠ヤ笅浠嬬粛涓ょ涓昏鐨勭被錛?br /> a錛塷rg.apache.lucene.document.Document錛?br />        Document鏂囨。綾諱技鏁版嵁搴撲腑鐨勪竴鏉¤褰曪紝鍙互鐢卞ソ鍑犱釜瀛楁錛團ield錛夌粍鎴愶紝騫朵笖瀛楁鍙互濂楃敤涓嶅悓鐨勭被鍨嬶紙璇︾粏瑙乥錛夈侱ocument鐨勫嚑縐嶆帴鍙o細 

鎺ュ彛鍚?o:p>

澶囨敞

add(Field field)

娣誨姞涓涓瓧孌碉紙Field錛夊埌Document涓?o:p>

String get(String name)

浠庢枃妗d腑鑾峰緱涓涓瓧孌靛搴旂殑鏂囨湰

Field getField(String name)

鐢卞瓧孌靛悕鑾峰緱瀛楁鍊?o:p>

Field[] getFields(String name)

鐢卞瓧孌靛悕鑾峰緱瀛楁鍊肩殑闆?o:p>


 b錛塷rg.apache.lucene.document.Field
        鍗充笂鏂囨墍璇寸殑“瀛楁”錛屽畠鏄疍ocument鐨勭墖孌祍ection銆?br />        Field鐨勬瀯閫犲嚱鏁幫細
       Field(String name, String string, boolean store, boolean index, boolean token)銆?br />        Indexed錛氬鏋滃瓧孌墊槸Indexed鐨勶紝琛ㄧず榪欎釜瀛楁鏄彲媯绱㈢殑銆?br />        Stored錛氬鏋滃瓧孌墊槸Stored鐨勶紝琛ㄧず榪欎釜瀛楁鐨勫煎彲浠ヤ粠媯绱㈢粨鏋滀腑寰楀埌銆?br />        Tokenized錛氬鏋滀竴涓瓧孌墊槸Tokenized鐨勶紝琛ㄧず瀹冩槸鏈夌粡榪嘇nalyzer杞彉鍚庢垚涓轟竴涓猼okens搴忓垪錛屽湪榪欎釜杞彉榪囩▼tokenization涓紝Analyzer鎻愬彇鍑洪渶瑕佽繘琛岀儲寮曠殑鏂囨湰錛岃屽墧闄や竴浜涘啑浣欑殑璇嶅彞錛堜緥濡傦細a錛宼he,they絳夛紝璇﹁org.apache.lucene.analysis.StopAnalyzer.ENGLISH_STOP_WORDS鍜宱rg.apache.lucene.analysis.standard.StandardAnalyzer(String[] stopWords)鐨凙PI錛夈俆oken鏄儲寮曟椂鍊欑殑鍩烘湰鍗曞厓錛屼唬琛ㄤ竴涓绱㈠紩鐨勮瘝錛屼緥濡備竴涓嫳鏂囧崟璇嶏紝鎴栬呬竴涓眽瀛椼傚洜姝わ紝鎵鏈夊寘鍚腑鏂囩殑鏂囨湰閮藉繀欏繪槸Tokenized鐨勩?br />     Field鐨勫嚑縐嶆帴鍙o細

Name

Stored

Indexed

Tokenized

use

Keyword(String name,

        String value)

Y

Y

N

date,url

Text(String name, Reader value)

N

Y

Y

short text fields:

title,subject

Text(String name, String value)

Y

Y

Y

longer text fields,

like “body”

UnIndexed(String name,

String value)

Y

N

N

 

UnStored(String name,

         String value)

N

Y

Y

 

Hits涓嶴earcher
       Hits鐨勪富瑕佷嬌鐢ㄦ帴鍙o細

鎺ュ彛鍚?o:p>

澶囨敞

Doc(int n)

榪斿洖絎琻涓殑鏂囨。鐨勬墍鏈夊瓧孌?o:p>

length()

榪斿洖榪欎釜闆嗕腑鐨勫彲鐢ㄤ釜鏁?o:p>


3.2.       鍏ㄦ枃媯绱㈤渶姹傜殑瀹炵幇

绱㈠紩寤虹珛閮ㄥ垎鐨勪唬鐮侊細


private void createIndex(String indexFilePath) throws Exception{

        IndexWriter iwriter=getWriter(indexFilePath);

        Document doc=new Document();

        doc.add(Field.Keyword("name","jerry"));

        doc.add(Field.Text("sender","bluedavy@gmail.com"));

        doc.add(Field.Text("receiver","google@gmail.com"));

        doc.add(Field.Text("title","鐢ㄤ簬绱㈠紩鐨勬爣棰?));

        doc.add(Field.UnIndexed("content","涓嶅緩绔嬬儲寮曠殑鍐呭"));

        Document doc2=new Document();

        doc2.add(Field.Keyword("name","jerry.lin"));

        doc2.add(Field.Text("sender","bluedavy@hotmail.com"));

        doc2.add(Field.Text("receiver","msn@hotmail.com"));

        doc2.add(Field.Text("title","鐢ㄤ簬绱㈠紩鐨勭浜屼釜鏍囬"));

        doc2.add(Field.Text("content","寤虹珛绱㈠紩鐨勫唴瀹?));

        iwriter.addDocument(doc);

        iwriter.addDocument(doc2);

        iwriter.optimize();

        iwriter.close();

    }

   

    private IndexWriter getWriter(String indexFilePath) throws Exception{

        boolean append=true;

        File file=new File(indexFilePath+File.separator+"segments");

        if(file.exists())

            append=false;

        return new IndexWriter(indexFilePath,analyzer,append);

    }


3.2.1.       瀵逛簬鏌愬瓧孌電殑鍏抽敭瀛楃殑妯$硦鏌ヨ


Query query=new WildcardQuery(new Term("sender","*davy*"));

       

        Searcher searcher=new IndexSearcher(indexFilePath);

        Hits hits=searcher.search(query);

        for (int i = 0; i < hits.length(); i++) {

            System.out.println(hits.doc(i).get("name"));

        }


3.2.2.       瀵逛簬鏌愬瓧孌電殑鍏抽敭瀛楃殑璇箟鏌ヨ


Query query=QueryParser.parse("绱㈠紩","title",analyzer);

       

        Searcher searcher=new IndexSearcher(indexFilePath);

        Hits hits=searcher.search(query);

        for (int i = 0; i < hits.length(); i++) {

            System.out.println(hits.doc(i).get("name"));

        }


3.2.3.       瀵逛簬澶氬瓧孌電殑鍏抽敭瀛楃殑鏌ヨ


Query query=MultiFieldQueryParser.parse("绱㈠紩",new String[]{"title","content"},analyzer);

       

        Searcher searcher=new IndexSearcher(indexFilePath);

        Hits hits=searcher.search(query);

        for (int i = 0; i < hits.length(); i++) {

            System.out.println(hits.doc(i).get("name"));

        }


3.2.4.       澶嶅悎鏌ヨ(澶氱鏌ヨ鏉′歡鐨勭患鍚堟煡璇?


Query query=MultiFieldQueryParser.parse("绱㈠紩",new String[]{"title","content"},analyzer);

        Query mquery=new WildcardQuery(new Term("sender","bluedavy*"));

        TermQuery tquery=new TermQuery(new Term("name","jerry"));

       

        BooleanQuery bquery=new BooleanQuery();

        bquery.add(query,true,false);

        bquery.add(mquery,true,false);

        bquery.add(tquery,true,false);

       

        Searcher searcher=new IndexSearcher(indexFilePath);

        Hits hits=searcher.search(bquery);

        for (int i = 0; i < hits.length(); i++) {

            System.out.println(hits.doc(i).get("name"));

        }


鍥?  鎬葷粨

鐩鎬俊澶у閫氳繃涓婇潰鐨勮鏄庤兘鐭ラ亾Lucene鐨勪竴涓熀鏈殑浣跨敤鏂規硶錛屽湪鍏ㄦ枃媯绱㈡椂寤鴻澶у鍏堥噰鐢ㄨ涔夋椂鐨勬悳绱紝鍏堟悳绱㈠嚭鏈夋剰涔夌殑鍐呭錛屼箣鍚庡啀榪涜妯$硦涔嬬被鐨勬悳绱紝^_^錛岃繖涓繕鏄渶瑕佹牴鎹悳绱㈢殑闇姹傛墠鑳藉畾浜嗭紝Lucene榪樻彁渚涗簡寰堝鍏朵粬鏇村ソ鐢ㄧ殑鏂規硶錛岃繖涓氨絳夊緟澶у鍦ㄤ嬌鐢ㄧ殑榪囩▼涓嚜宸卞幓榪涗竴姝ョ殑鎽哥儲浜嗭紝姣斿瀵逛簬Lucene鏈韓鎻愪緵鐨凲uery鐨勬洿鐔熺粌鐨勬帉鎻★紝瀵逛簬Filter銆丼orter鐨勪嬌鐢紝鑷繁鎵╁睍瀹炵幇Analyzer錛岃嚜宸卞疄鐜癚uery絳夌瓑錛岀敋鑷沖彲浠ュ幓浜嗚В涓浜涘叧浜庢悳绱㈠紩鎿庣殑鎶鏈?鍒囪瘝銆佺儲寮曟帓搴?etc)絳夌瓑



Eric.Zhou 2007-01-28 10:38 鍙戣〃璇勮
]]>
主站蜘蛛池模板: 亚洲啪啪综合AV一区| xvideos亚洲永久网址| 综合自拍亚洲综合图不卡区| 久久av免费天堂小草播放| 亚洲国产成人爱av在线播放| 国产精品亚洲а∨无码播放不卡 | 亚洲砖码砖专无区2023| 免费精品国产自产拍在线观看图片| 最近的2019免费中文字幕| 伊人久久亚洲综合| 四虎国产精品免费永久在线| 亚洲精品无码精品mV在线观看| 精品在线免费观看| 亚洲精品亚洲人成在线麻豆| 一个人免费观看视频www| 亚洲丝袜美腿视频| 国产黄色免费网站| 亚洲精品无码久久久久秋霞| 波多野结衣视频在线免费观看 | 免费成人高清在线视频| 亚洲欧洲日产国产综合网| 222www在线观看免费| 亚洲成aⅴ人片久青草影院按摩| 免费少妇a级毛片人成网| 波霸在线精品视频免费观看| 亚洲系列国产精品制服丝袜第| 青春禁区视频在线观看直播免费| 亚洲国产成人AV网站| 亚洲无人区午夜福利码高清完整版 | 久久久久久久岛国免费播放| 亚洲一级片在线观看| 国产v片免费播放| APP在线免费观看视频| 亚洲人成免费网站| 亚洲国产成人久久综合一区77| 久久美女网站免费| 亚洲精品无码久久| 久久亚洲一区二区| 欧洲美熟女乱又伦免费视频| 美女在线视频观看影院免费天天看 | 老司机午夜在线视频免费观|