精品欧美一区二区三区在线观看 _久久久久国色av免费观看性色_国产精品久久在线观看_亚洲第一综合网站_91精品又粗又猛又爽_小泽玛利亚一区二区免费_91亚洲精品国偷拍自产在线观看 _久久精品视频在线播放_美女精品久久久_欧美日韩国产成人在线

關于Lucene以及索引和搜索的流程

開發 后端
Lucene的普及和成功的背后是因為它的簡單。因此,你不需要深入理解Lucene的信息索引和檢索工作方面的知識就可以開始使用。Lucene提供了簡單但是強大的核心API去實現全文索引和檢索,你只需要掌握少數的類就能將Lucene整合到應用中。

Lucene的普及和成功的背后是因為它的簡單。

因此,你不需要深入理解Lucene的信息索引和檢索工作方面的知識就可以開始使用。

Lucene提供了簡單但是強大的核心API去實現全文索引和檢索,你只需要掌握少數的類就能將Lucene整合到應用中。

剛接觸Lucene的人可能會誤認為Lucene是一個文件搜索工具、網絡爬蟲、或者網頁搜索引擎。實際上Lucene是一個軟件庫,而不是一個全功能的搜索應用程序。它涉及全文索引和搜索,而且做得非常好。Lucene可以讓你的應用程序隱藏起復雜的索引和搜索背后的操作,而使用簡單的API處理特定的問題領域和業務規則。你可以想象Lucene就是像一個層,你的應用就在層的上面。

Lucene允許你添加索引和搜索功能到應用程序中。Lucene不關心數據的來源,Lucene可以索引和搜索任何可以轉換成文本格式的數據。這意味著你可以用Lucene索引和搜索數據:遠程web服務器上的網頁、存儲在本地文件系統的文檔、簡單的文本文件、Microsoft Word文檔、HTML或PDF文件,或者其他任何可以從中提取文本信息的格式文件。

所有搜索引擎的核心就是索引的概念:把原始數據處理成一個高效的交叉引用查找,以便快速檢索。讓我們看看快速高效的索引和搜索過程。

1.索引是什么,為什么它這么重要?

假如你需要搜索大量的文件,你希望找到那些包含某個單詞或詞組的文件。你將如何去寫一個程序實現這個功能?一個做法就是按順序掃描每一個文件,搜索是否包含給定的單詞或詞組。但是這樣的做法有很多缺陷的,其中最明顯的就是在大量的文件存在的情況下,速度是令人無法接受的。這種情況下,索引產生了。為了搜索大量的文本,你首先要對這些文本以特定的結構存儲,這種存儲結構可以讓你迅速的搜索,消除慢的順序掃描的過程。這種存儲結構就叫索引,將文本轉換成特定結構存儲的過程,就叫建立索引。

索引作為一種數據結構,允許你快速隨機的訪問存儲在里面的詞。類似于字典的目錄,某個詞對應到某一頁,查找的時候直接定位到那一頁,速度就非常快,不用一頁一頁的翻去查找。Lucene的索引是一種專門設計的數據結構,通常作為一組索引文件存儲在文件系統上。

2.什么是搜索?

在索引中搜索關鍵詞,找到包含關鍵詞的文檔的過程就是搜索。搜索質量通常使用準確度和召回率來描述。所謂召回率是指一次搜索結果集合中符合用戶要求的數目與和用戶查詢相關的總數之比,而準確率是指一次搜索結果集合中符合用戶要求的數目與該次搜索結果總數之比。我們也需要考慮其他有關搜索的因素,比如速度和快速搜索大量文本的能力,單個和多項查詢、 短語查詢、 通配符、 結果的排名和排序的支持也很重要。

3.Lucene in Action

假如我們需要索引和搜索存儲在一個目錄下的文件。

在我們使用Lucene進行搜索之前,我們需要先建立索引。使用的Lucene的版本是3.6。

3.1建立索引

1)創建存放索引的目錄Directory

2)創建索引器配置管理類IndexWriterConfig

3)使用索引目錄和配置管理類創建索引器

4)使用索引器將Document寫到索引文件中

索引器類:

  1. /**  
  2.  * 索引器  
  3.  * @author Luxh  
  4.  */ 
  5. public class Indexer {  
  6.        
  7.        
  8.     /**  
  9.      * 建立索引  
  10.      * @param filePath 需要建立索引的文件的存放路徑  
  11.      * @throws IOException  
  12.      */ 
  13.     public static void createIndex(String filePath) throws IOException {  
  14.            
  15.         //在當前路徑下創建一個叫indexDir的目錄  
  16.         File indexDir = new File("./indexDir");  
  17.            
  18.         //創建索引目錄  
  19.         Directory directory = FSDirectory.open(indexDir);  
  20.            
  21.         //創建一個分詞器  
  22.         Analyzer analyzer = new StandardAnalyzer(Version.LUCENE_36);  
  23.            
  24.         //創建索引配置器  
  25.         IndexWriterConfig indexWriterConfig = new IndexWriterConfig(Version.LUCENE_36,analyzer);  
  26.            
  27.            
  28.         LogMergePolicy mergePolicy = new LogByteSizeMergePolicy();  
  29.            
  30.         //設置segment添加文檔(Document)時的合并頻率  
  31.         //值較小,建立索引的速度就較慢  
  32.         //值較大,建立索引的速度就較快,>10適合批量建立索引  
  33.         mergePolicy.setMergeFactor(50);  
  34.            
  35.         //設置segment最大合并文檔(Document)數  
  36.         //值較小有利于追加索引的速度  
  37.         //值較大,適合批量建立索引和更快的搜索  
  38.         mergePolicy.setMaxMergeDocs(5000);  
  39.            
  40.         //啟用復合式索引文件格式,合并多個segment  
  41.         mergePolicy.setUseCompoundFile(true);  
  42.            
  43.            
  44.         indexWriterConfig.setMergePolicy(mergePolicy);  
  45.            
  46.         //設置索引的打開模式  
  47.         indexWriterConfig.setOpenMode(OpenMode.CREATE_OR_APPEND);  
  48.            
  49.         //創建索引器  
  50.         IndexWriter indexWriter = new IndexWriter(directory,indexWriterConfig);  
  51.            
  52.            
  53.         File fileDir = new File(filePath);  
  54.         for(File file : fileDir.listFiles()) {  
  55.             //Document是Lucene的文檔結構,需要索引的對象都要轉換為Document  
  56.             Document document = new Document();  
  57.                
  58.             //文件名,可查詢,分詞,存儲到索引庫記錄中  
  59.             document.add(new Field("name",getFileName(file),Store.YES,Index.ANALYZED));  
  60.                
  61.             //文件路徑,可查詢,不分詞,存儲到索引庫記錄中  
  62.             document.add(new Field("path",file.getAbsolutePath(),Store.YES,Index.NOT_ANALYZED));  
  63.                
  64.             //大文本內容,可查詢,不存儲,實際上可根據文件路徑去找到真正的文本內容  
  65.             //document.add(new Field("content",new FileReader(file)));  
  66.                
  67.             //小文本內容,可以存儲到索引記錄庫  
  68.             document.add(new Field("content",getFileContent(file),Store.YES,Index.ANALYZED));  
  69.                
  70.             //把文檔添加到索引庫  
  71.             indexWriter.addDocument(document);  
  72.                
  73.         }  
  74.            
  75.         //提交索引到磁盤上的索引庫,關閉索引器  
  76.         indexWriter.close();  
  77.    
  78.     }  
  79.        
  80.     /**  
  81.      * 獲取文件名  
  82.      */ 
  83.     public static String getFileName(File file) {  
  84.         String fileName = "";  
  85.         if(file != null) {  
  86.             fileName = file.getName().substring(0, file.getName().lastIndexOf("."));  
  87.         }  
  88.         return fileName;  
  89.     }  
  90.        
  91.     /**  
  92.      * 獲取文本  
  93.      * @param file  
  94.      */ 
  95.     public static String getFileContent(File file) {  
  96.         FileReader fr = null;  
  97.         BufferedReader br = null;  
  98.         String content = "";  
  99.         try {  
  100.             fr = new FileReader(file);  
  101.             br = new BufferedReader(fr);  
  102.             StringBuffer sb = new StringBuffer();  
  103.             String line = br.readLine();  
  104.             while(null != line){  
  105.                 sb.append(line);  
  106.                 line = br.readLine();  
  107.             }  
  108.             content = sb.toString();  
  109.         }catch(Exception e) {  
  110.             e.printStackTrace();  
  111.         }finally {  
  112.             try {  
  113.                 if(fr != null)  
  114.                     fr.close();  
  115.                 if(br != null)  
  116.                     br.close();  
  117.             } catch (IOException e) {  
  118.                 e.printStackTrace();  
  119.             }  
  120.         }  
  121.         return content;  
  122.            
  123.     }  
  124.    
  125.        

IndexWriter:索引器,負責創建和維護一條索引。

在Lucene3.6版本,只推薦使用一個構造方法IndexWriter(Directory d,IndexWriterConfig conf),其他的構造方法都已經過時。所有關于IndexWriter的配置都是通過IndexWriterConfig來進行管理。

IndexWriterConfig:索引器配置類,管理所有有關索引器的配置。只有一個構造方法IndexWriterConfig(Version matchVersion,Analyzer analyzer),構造方法中的參數matchVersion是Lucene的版本,analyzer是分詞器。

接下來我們運行索引器創建索引。

  1. public class TestIndexer {  
  2.        
  3.     /**  
  4.      * 創建索引  
  5.      * @throws IOException  
  6.      */ 
  7.     @Test 
  8.     public void testCreateIndex() throws IOException{  
  9.         //存放需要建立索引的文件的目錄路徑  
  10.         String filePath = "./fileDir";  
  11.         //調用索引器的創建索引方法  
  12.         Indexer.createIndex(filePath);  
  13.     }  

這樣我們就對當前路徑下fileDir中的文件創建了索引。

3.2執行搜索

在Lucene中搜索像建立索引一樣簡單、快速。現在,我們建立一個搜索器,搜索包含特定文本的文件。

1)使用QueryParser將查詢的關鍵詞解析成Lucene的查詢對象Query。創建QueryParser的時候我們需要用到分詞器,這個分詞器要和前面創建索引的時候使用的分詞器一致。

2)使用FSDirectory打開索引所在的目錄。

3)使用IndexReader讀取索引目錄和使用IndexSearcher進行搜索。

4)返回搜索結果對象TopDocs。TopDocs包含搜索到結果總數和結果的集合ScoreDocs數組

5)遍歷結果的集合ScoreDocs數組,根據每一個ScoreDoc的文檔編號獲取Document

看看搜索器的代碼:

  1. /**  
  2.  * 搜索器  
  3.  * @author Luxh  
  4.  */ 
  5. public class Searcher {  
  6.        
  7.     /**  
  8.      * 搜索  
  9.      * @param keyWord 搜索的關鍵詞  
  10.      * @param indexDir  索引目錄所在路徑  
  11.      * @throws ParseException  
  12.      * @throws IOException  
  13.      * @return List<Document>  
  14.      */ 
  15.     public static List<Document> search(String keyWord,String indexDirPath) throws ParseException, IOException {  
  16.            
  17.         String[] fields = {"name","content"};  
  18.            
  19.         //創建一個分詞器,和創建索引時用的分詞器要一致  
  20.         Analyzer analyzer = new StandardAnalyzer(Version.LUCENE_36);  
  21.            
  22.         //創建查詢解析器  
  23.         QueryParser queryParser = new MultiFieldQueryParser(Version.LUCENE_36,fields,analyzer);  
  24.            
  25.         //將查詢關鍵詞解析成Lucene的Query對象  
  26.         Query query = queryParser.parse(keyWord);  
  27.            
  28.         //打開索引目錄  
  29.         File indexDir = new File(indexDirPath);  
  30.         Directory directory = FSDirectory.open(indexDir);  
  31.            
  32.         //獲取訪問索引的接口,進行搜索  
  33.         IndexReader indexReader  = IndexReader.open(directory);  
  34.         IndexSearcher indexSearcher = new IndexSearcher(indexReader);  
  35.            
  36.         //TopDocs 搜索返回的結果  
  37.         TopDocs topDocs = indexSearcher.search(query, 100);//只返回前100條記錄  
  38.            
  39.         int totalCount = topDocs.totalHits; // 搜索結果總數量  
  40.         System.out.println("搜索到的結果總數量為:" + totalCount);  
  41.            
  42.         ScoreDoc[] scoreDocs = topDocs.scoreDocs; // 搜索的結果集合  
  43.            
  44.         List<Document> docs = new ArrayList<Document>();  
  45.            
  46.         for(ScoreDoc scoreDoc : scoreDocs) {  
  47.             //文檔編號  
  48.             int docID = scoreDoc.doc;  
  49.             //根據文檔編號獲取文檔  
  50.             Document doc = indexSearcher.doc(docID);  
  51.             docs.add(doc);  
  52.         }  
  53.         indexReader.close();  
  54.         indexSearcher.close();  
  55.         return docs;  
  56.     }  

接下來我們運行搜索器:

  1. public class TestSearcher {  
  2.        
  3.     /**  
  4.      * 搜索  
  5.      */ 
  6.     @Test 
  7.     public void testSearch() throws IOException, ParseException{  
  8.         //搜索關鍵詞  
  9.         String keyWord = "Java";  
  10.         //索引目錄路徑  
  11.         String indexDirPath = "./indexDir";  
  12.         //調用搜索器進行搜索  
  13.         List<Document> docs = Searcher.search(keyWord, indexDirPath);  
  14.         for(Document doc : docs) {  
  15.             System.out.println("文件名 : "+doc.get("name"));  
  16.             System.out.println("路徑 : "+doc.get("path"));  
  17.             System.out.println("內容 : "+doc.get("content"));  
  18.         }  
  19.     }  
  20.        
  21.        

如果有包含關鍵詞的文件,就會被搜索出來了。

原文鏈接:http://www.cnblogs.com/luxh/archive/2012/06/20/2554095.html

責任編輯:林師授 來源: 博客園
相關推薦

2011-09-16 15:55:09

Java

2012-04-13 09:05:41

LuceneJava

2017-09-15 16:00:48

Lucene存儲讀取技術

2011-06-20 18:23:06

SEO

2017-09-22 09:20:06

數據庫索引

2015-07-31 10:30:47

IBM Cloudan開源搜索

2017-09-04 16:03:46

MySQLMySQL索引索引

2009-09-22 16:23:52

搜索引擎

2016-10-25 12:39:37

Windows優化桌面

2024-04-16 09:53:56

PostgreSQL數據庫優化索引

2011-12-08 10:39:29

JavaLucene

2021-07-15 10:11:56

IT流程設計流程流程文化

2021-01-28 05:13:17

Oracle索引外鍵

2020-02-25 15:47:05

ElasticsearLucene地方

2013-05-24 09:57:28

搜索流程搜索產品設計搜索設計

2009-02-19 09:41:36

搜索引擎搜狐百度

2024-09-04 15:54:43

Python列表索引

2010-02-06 15:06:14

2022-10-14 07:42:50

LuceneHTTPWeb

2017-08-07 08:15:31

搜索引擎倒排
點贊
收藏

51CTO技術棧公眾號

欧美在线观看一区二区三区| 日韩免费性生活视频播放| 日韩精品欧美在线| 一卡二卡在线视频| 亚洲二区在线| 中文字幕亚洲图片| 国产精品一区二区无码对白| 亚洲承认视频| 亚洲精品国产一区二区精华液 | 瑟瑟视频在线免费观看| 欧美国产三级| 国产亚洲美女精品久久久| 国产又粗又猛又爽又黄| 性高爱久久久久久久久| 有坂深雪av一区二区精品| 欧美一级片免费观看| av中文字幕免费在线观看| 亚洲欧美成人| 久久久久国产精品免费| 特黄一区二区三区| 亚洲电影一级片| 日韩一区二区电影在线| 美女网站免费观看视频| 高清毛片在线观看| 综合色中文字幕| 欧洲精品一区色| 狠狠人妻久久久久久综合麻豆| 蜜臀av在线播放一区二区三区 | 丰满女人性猛交| 欧美xxx.com| 成人av动漫在线| 亚洲v日韩v综合v精品v| 波多野结衣日韩| 国产精品婷婷| 久久久久亚洲精品国产| 色欲一区二区三区精品a片| 国产va免费精品观看精品视频| 精品日韩在线观看| 久久无码人妻一区二区三区| 992tv国产精品成人影院| 福利视频第一区| av免费看网址| 丁香花在线高清完整版视频| 亚洲欧洲成人av每日更新| 日韩在线电影一区| 亚洲乱色熟女一区二区三区| 国产一区欧美日韩| 国产日韩欧美影视| 伊人成人在线观看| 日韩不卡免费视频| 国产精品成人一区| 国产又粗又猛又爽又| 视频一区二区中文字幕| 日韩av色综合| 中文字幕第31页| 免费人成网站在线观看欧美高清| 国产成人在线一区二区| 久久精品视频2| 老司机精品久久| 国产精品成熟老女人| 亚洲欧美一二三区| 日韩电影在线观看电影| 国产精品av在线播放| 国产区一区二区三| 久久久青草婷婷精品综合日韩 | 日本精品国产| 精品国产区一区| 亚洲国产综合视频| 怕怕欧美视频免费大全| 一区二区欧美激情| 九九热视频在线免费观看| 一本一道久久a久久精品蜜桃| 欧美俄罗斯性视频| 日韩久久精品视频| 日本不卡视频在线观看| 成人春色激情网| 国产成人精品av在线观| 99久久婷婷国产综合精品 | 欧美视频免费一区二区三区| 久久免费电影网| 亚洲人成网站在线观看播放| 国产福利视频在线| 亚洲一二三区不卡| 国产精品亚洲a| 外国成人毛片| 亚洲成人久久电影| 夜夜春很很躁夜夜躁| 亚洲精品小说| 97超视频免费观看| 伊人网中文字幕| 岛国一区二区在线观看| 蜜桃精品久久久久久久免费影院| av电影在线观看一区二区三区| 亚洲色图一区二区三区| 国产一级爱c视频| 8av国产精品爽爽ⅴa在线观看 | 国产精品香蕉国产| 性中国古装videossex| 久久久久久日产精品| 一级黄色免费在线观看| 成人在线高清免费| 欧美熟乱第一页| 日本性生活一级片| 欧美成人直播| 欧美伊久线香蕉线新在线| 国产麻豆免费视频| 久久嫩草精品久久久久| 日本男女交配视频| 欧美国产日韩电影| 亚洲国产美女精品久久久久∴| 国产成人在线网址| 国产亚洲网站| 99国内精品久久久久久久软件| 黄色片在线免费看| 亚洲成人av一区二区| 做a视频在线观看| 视频精品在线观看| 高清一区二区三区四区五区| 国产农村妇女毛片精品| 久久天天做天天爱综合色| 久久久天堂国产精品| 欧美高清免费| 亚洲开心激情网| 国产精品成人国产乱| 国产综合久久久久久鬼色| 奇米影视首页 狠狠色丁香婷婷久久综合| 中文字幕在线播放网址| 欧美日韩一区二区不卡| 美女100%无挡| 欧美中文字幕| 久久www免费人成精品| 在线观看电影av| 欧美日韩黄视频| 日韩女同一区二区三区| 久久久精品五月天| 老牛影视免费一区二区| 免费在线小视频| 亚洲精品理论电影| 精品少妇久久久| 高清久久久久久| www成人免费| 4438全国亚洲精品观看视频| 久久视频免费观看| 一级黄色小视频| 国产精品国产自产拍高清av | 国产精品男女视频| 99久久99久久精品国产片果冻 | 亚洲国产女人aaa毛片在线| 久一视频在线观看| 懂色av一区二区在线播放| 久久久天堂国产精品| 亚洲成人黄色| 97香蕉超级碰碰久久免费软件 | 日韩中文字幕视频在线| 亚洲 小说区 图片区| 国产精品午夜在线| 奇米视频888| 亚洲激情久久| 国产精选在线观看91| 国产白浆在线免费观看| 精品久久一二三区| 国产无遮挡又黄又爽又色| 99re视频精品| 天天影视综合色| 久久精品av| 亚洲在线一区二区| 9999在线视频| 亚洲视频在线视频| 亚洲一区 中文字幕| 亚洲欧洲精品一区二区精品久久久| 亚洲色图偷拍视频| 国内一区二区三区| 久久精品日韩| 成人影院在线免费观看| 久99久在线视频| 天天摸天天干天天操| 日本久久电影网| 久久精品一区二区三区四区五区 | 麻豆精品传媒视频| 国产91在线播放精品| 精品国产一区二区三区久久狼黑人| 国产精品一区二区人人爽| 亚洲成av人片观看| 妺妺窝人体色WWW精品| 精品一区免费av| 免费拍拍拍网站| 经典一区二区| 亚洲free性xxxx护士白浆| 麻豆理论在线观看| 在线视频日韩精品| 亚洲风情第一页| 在线观看av一区二区| 欧美日韩综合一区二区| 久久精品视频一区| 69久久精品无码一区二区| 亚洲尤物影院| 精品国产三级a∨在线| 香蕉久久夜色精品国产更新时间| 国产欧美中文字幕| 热色播在线视频| 欧美成人免费视频| 久青草国产在线| 欧美白人最猛性xxxxx69交| 人人草在线观看| 亚洲大片一区二区三区| 亚洲女同二女同志奶水| 91亚洲男人天堂| 亚洲五月激情网| 三级成人在线视频| 久久国产精品网| 99久久亚洲精品蜜臀| 欧美精品亚洲| 久久这里只有精品一区二区| 91九色国产社区在线观看| 日韩av福利| 91精品国产成人| aa在线视频| 日日噜噜噜夜夜爽亚洲精品 | 亚洲在线视频播放| 欧美视频一二三| 免费在线视频观看| **网站欧美大片在线观看| 国产男男chinese网站| 丁香天五香天堂综合| 国产在线观看中文字幕| 日韩国产欧美在线视频| 波多野结衣家庭教师在线播放| 综合激情网站| 黄色影视在线观看| 日韩免费特黄一二三区| 日韩精品在在线一区二区中文| 欧美深夜视频| 国产女人水真多18毛片18精品 | 亚洲国产中文字幕在线观看| a天堂视频在线| 69堂成人精品免费视频| 这里只有精品9| 欧美色偷偷大香| 特级西西444www高清大视频| 在线精品亚洲一区二区不卡| 人妻 日韩精品 中文字幕| 午夜欧美大尺度福利影院在线看 | 在线视频精品| 激情五月宗合网| 99在线热播精品免费99热| 天堂…中文在线最新版在线| 一本色道88久久加勒比精品| 日韩五码在线观看| 9国产精品视频| 18禁免费无码无遮挡不卡网站| 一本色道久久精品| www.中文字幕在线| 母乳一区在线观看| 欧美日韩怡红院| 免费观看在线综合| 一级做a免费视频| 国产精品18久久久久久久网站| 9191在线视频| 9久草视频在线视频精品| 亚洲男人在线天堂| 久久久久久久久99精品| www.99热| 亚洲精品自拍动漫在线| 国产在线视频二区| 欧美日韩亚洲国产一区| 日本久久综合网| 欧美日韩国产区一| a级片免费视频| 日韩国产在线播放| youjizz在线播放| 久久影视电视剧免费网站| 污视频网站在线免费| 8050国产精品久久久久久| 欧美舌奴丨vk视频| 国产一区视频在线| 7777精品| 热re99久久精品国99热蜜月| 天天影视天天精品| 久久99久久99精品| 久久久久免费| 91av免费观看| 久久一夜天堂av一区二区三区| 黄色免费一级视频| 亚洲综合男人的天堂| 日韩精品一区不卡| 欧美一区二区三区免费观看视频 | 欧美日韩爱爱视频| 亚洲欧美se| 91九色在线视频| 精品按摩偷拍| 亚洲一区二区不卡视频| 在线成人亚洲| xxx国产在线观看| 成人精品电影在线观看| 黄色av免费播放| 亚洲二区在线视频| 中文字幕在线观看1| 欧美成人精品二区三区99精品| 国产在线观看精品一区| 欧美黑人xxxx| 国产伊人久久| 欧美日韩一区二区三| 欧美日韩亚洲一区三区| 少妇黄色一级片| 99久久99久久精品免费观看| 国产免费久久久久| 91福利社在线观看| 欧美特黄一级视频| 久久中文精品视频| 成人做爰视频www| 精品国产免费一区二区三区 | 国产精品沙发午睡系列990531| 国产在线观看99| 欧美一二三四在线| 五月天婷婷在线视频| 青草青草久热精品视频在线观看| 涩爱av色老久久精品偷偷鲁| 日韩欧美一区二区三区四区五区| 亚洲人成免费| 四虎国产精品免费| 中文字幕一区视频| 最近中文字幕在线免费观看 | 国产69精品久久久久9999apgf| 欧美一区电影| 亚洲乱码国产一区三区| 99riav一区二区三区| 久久久久无码精品国产| 在线播放日韩导航| 成人三级黄色免费网站| 国产91色在线|| 香蕉人人精品| 国产a级一级片| 99久久国产综合色|国产精品| 久久久久久国产精品视频| 91精品黄色片免费大全| 欧美三级电影一区二区三区| 国产美女久久精品| 欧美顶级大胆免费视频| 蜜臀av免费观看| 国产精品青草综合久久久久99| 久久久久久亚洲av无码专区| 亚洲精品中文字幕有码专区| 91精品论坛| 日韩成人av电影在线| 丝袜美腿亚洲色图| 免费一级黄色录像| 欧美亚洲高清一区| av电影在线观看一区二区三区| 国产精品永久免费观看| 四虎国产精品免费观看| 亚洲精品性视频| 亚洲精品欧美激情| 国产jzjzjz丝袜老师水多| 成人97在线观看视频| 成人三级av在线| 成人免费播放器| 久久五月婷婷丁香社区| 国产成人精品一区二区色戒| 精品久久久av| 88久久精品| 丝袜老师办公室里做好紧好爽| 久久久不卡影院| 最近中文字幕在线免费观看| 久久久国产精品亚洲一区| 国产在线视频欧美一区| 日本a视频在线观看| 国产日韩欧美激情| 一区二区三区日| 欧美日韩成人免费| 久久365资源| 亚洲无吗一区二区三区| 亚洲视频免费在线| 天天摸天天碰天天爽天天弄| 国产高清视频一区三区| 午夜影院欧美| 国产精品手机在线观看| 色狠狠av一区二区三区| 国产三区视频在线观看| 国产精品免费一区二区三区观看 | 国产午夜在线观看| 国产日韩欧美成人| 亚洲国产综合在线看不卡| 精品无人区无码乱码毛片国产| 91精品国产麻豆| 伊人色综合一区二区三区影院视频| 亚洲欧洲在线一区| 懂色av中文一区二区三区| 少妇一级淫片日本| 欧美成人h版在线观看| 久草成人资源| 91精品国产高清91久久久久久 | 国产伦一区二区三区| 中文字幕第三区| 色狠狠av一区二区三区| 污视频网站免费在线观看| 日韩在线电影一区| 成人美女视频在线看| 在线视频免费观看一区| 7777kkkk成人观看| 在线观看日韩|