日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

lucene 入门整理

發布時間:2023/12/10 编程问答 44 豆豆
生活随笔 收集整理的這篇文章主要介紹了 lucene 入门整理 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

2019獨角獸企業重金招聘Python工程師標準>>>

1.??? 概述

Lucene是一個全文檢索引擎的架構,提供了完整的查詢引擎和索引引擎。Lucene以其方便使用、快速實施以及靈活性受到廣泛的關注。它可以方便地嵌入到各種應用中實現針對應用的全文索引、檢索功能,本總結使用lucene--2.3.2。

2.??? lucene?的包結構

1、org.apache.lucene.analysis對需要建立索引的文本進行分詞、過濾等操作, 語言分析器,主要用于的切詞Analyzer是一個抽象類,管理對文本內容的切分詞規則。

2、org.apache.lucene.analysis.standard是標準分析器

3、org.apache.lucene.document提供對Document和Field的各種操作的支持。索引存儲時的文檔結構管理,類似于關系型數據庫的表結構。Document相對于關系型數據庫的記錄對象,Field主要負責字段的管理。

4、org.apache.lucene.index是最重要的包,用于向Lucene提供建立索引時各種操作的支持。索引管理,包括索引建立、刪除等。索引包是整個系統核心,全文檢索的根本就是為每個切出來的詞建索引,查詢時就只需要遍歷索引,而不需要去正文中遍歷,從而極大的提高檢索效率。

5、org.apache.lucene.queryParser提供檢索時的分析支持。查詢分析器,實現查詢關鍵詞間的運算,如與、或、非等。

6、org.apache.lucene.search 負責檢索。檢索管理,根據查詢條件,檢索得到結果。

7、org.apache.lucene.store提供對索引存儲的支持。數據存儲管理,主要包括一些底層的I/0操作。

8、org.apache.lucene.util提供一些常用工具類和常量類的支持

3.??? 索引文件格式

a)???????? .fnm格式? 包含了Document中所有field名稱

b)??????? .fdt與.fdx格式? .fdt文件用于存儲具有Store.YES屬性的Field的數據;.fdx是一個索引,用于存儲Document在.fdt中的位置。

c)???????? .tis 與.tii格式? .tis文件用于存儲分詞后的詞條(Term),而.tii就是它的索引文件,它表明了每個.tis文件中的詞條的位置。

d)??????? deletable格式 文檔被刪除后,會首先在deletable文件中留下一個記錄,要真正刪除時,才將索引除去。

e)???????? 復合索引格式 .cfs

使用IndexWriter的useCompoundFile()? 默認為True

4.??? lucene中主要的類

4.1. Document文檔類

4.1.1.常用方法

方法

描述

void add(Field field)

Document對象中添加字段

void removeField(String name)

刪除字段。若多個字段以同一個字段名存在,則刪除首先添加的字段;若不存在,則Document保持不變

void removeFields(String name)

刪除所有字段。若字段不存在,則Document保持不變

Field getFieldString name

若多個字段以同一個字段名存在,則返回首先添加的字段;若字段不存在,則Document保持不變

Enumeration fields()

返回Document對象的所有字段,以枚舉類型返回

Field [] getFields(String name)

根據名稱得到一個Field的數組

String [] getValues(String name)

根據名稱得到一個Field的值的數組

?

4.1.2.示例

Document doc1 = new Document();

doc1.add(new Field("name", "word1 word2 word3",

Field.Store.NO,Field.Index.TOKENIZED));

Document doc2 = new Document();

doc2.add(new Field("name", "word1 word2 word3",

Field.Store.NO,Field.Index.TOKENIZED));

4.2. Field字段類

4.2.1.構造方法

1)??????? public Field(String name,String value,Store store,Index index);//直接的字符串方式

2)??????? public Field(String name,String value,Store store,Index index,TermVector termVector);

3)??????? public Field(String name,String value,Reader reader);//使用Reader從外部傳入

4)??????? public Field(String name,String value,Reader reader,TermVector termVector);

5)??????? public Field(String name,byte[] value,Store store)//使用直接的二進制byte傳入

當Field值為二進制時,可以使用Lucene的壓縮功能將其值進行壓縮。

4.2.2.Store類

靜態屬性

描述

Store.NO

表示該Field不需要存儲

Store.YES

表示該Field需要存儲

Store.COMPRESS

表示用壓縮方式來保存這個Field的值

4.2.3.Index類

靜態屬性

描述

Index.NO

不需要索引

Index.TOKENIZED

先被分詞再被索引

Index.UN_TOKENIZED

不對該Field進行分詞,但會對它進行索引

Index.NO_NORMS

對該Field進行索引,但是不使用Analyzer,同時禁止它參加評分,主要是為了減少內存的消耗。

?

4.2.4.示例

new Field("name", "word1 word2 word3",Field.Store.YES,Field.Index.TOKENIZED)

?

4.3. IndexWriter類

4.3.1.構造方法

1)??????? public IndexWriter(String path,Analyzer a,Boolean create)

2)??????? public IndexWriter(File path,Analyzer a,Boolean create)

3)??????? public IndexWriter(Directory d,Analyzer a,Boolean create)

第一個參數:索引存放在什么地方

第二個參數:分析器,繼承自org.apache.lucene.analysis.Analyzer類

第三個參數:為true時,IndexWriter不管目錄內是否已經有索引了,一律清空,重新建立;當為false時,則IndexWriter會在原有基礎上增量添加索引。所以在更新的過程中,需要設置該值為false。

4.3.2.添加文檔

public void addDocument(Document doc)

public void addDocument(Document doc,Analyzer analyzer)//使用一個開發者自定義的,而非事先在構建IndexWriter時聲明的Analyzer來進行分析

writer.addDocument(doc1);

4.3.3.性能參數

1)??????? mergeFactor控制Lucene在把索引從內存寫入磁盤上的文件系統時內存中最大的Document數量,同時它還控制內存中最大的Segment數量。默認為10.

writer.setMergeFactor(10);

2)??????? maxMergeDocs限制一個Segment中最大的文檔數量。一個較大的maxMergeDocs適用于對大批量的文檔建立索引,增量式的索引則應使用較小的maxMergeDocs。

writer.setMaxMergeDocs(1000);

3)??????? minMergeDocs用于控制內存中持有的文檔數量的,它對磁盤上的Segment大小沒有任何影響。

4.3.4.限制Field的長度

maxFieldLength限制Field的長度,默認值為10000.最大值100000個。

public void setMaxFieldLength(int maxFieldLength)

writer.addDocument(doc1);

writer.setMaxFieldLength(100000);

writer.addDocument(doc2);

4.3.5.復合索引格式

setUseCompoundFile(Boolean) 默認true

writer.setUseCompoundFile(true);//復合索引

writer.setUseCompoundFile(false);

4.3.6.優化索引

writer.optimize();

將磁盤上的多個segment進行合并,組成一個全新的segment。這種方法并不會增加建索時的速度,反而會降低建索的速度。所以應該在建完索引后在調用這個函數

4.3.7.示例

IndexWriter writer = new IndexWriter(path, new StandardAnalyzer(), true);

writer.addDocument(doc1);

writer.addDocument(doc2);

Sytem.out.println(writer.docCount());

writer.close();

IndexSearcher searcher = new IndexSearcher(path);

Hits hits = null;

Query query = null;

QueryParser parser =new QueryParser("name", new StandardAnalyzer());

query =parser.parse("word1");

hits = searcher.search(query);

System.out.println("查找 word1 共" + hits.length() + "個結果");

?

4.4. Directory類

Directory:用于索引的存放位置

a)???????? FSDirectory.getDirectory(path, true)第二個參數表示刪除掉目錄內原有內容

IndexWriter writer = new IndexWriter(FSDirectory.getDirectory(path, true), new StandardAnalyzer(), true);//刪除原有索引

FSDirectory fsDir=FSDirectory.getDirectory(path,true);

IndexWriter writer = new IndexWriter(fsDir, new StandardAnalyzer(), true);

b)??????? RAMDirectory在內存中存放,讀取速度快,但程序一運行結束,它的內容就不存在了

RAMDirectory ramDir=new RAMDirectory();

IndexWriter writer = new IndexWriter(ramDir, new StandardAnalyzer(), true);

?

IndexWriter writer = new IndexWriter(new RAMDirectory(), new StandardAnalyzer(), true);

4.5. IndexReader類

IndexReader類――索引的讀取工具

4.5.1.刪除文檔

IndexReader reader=IndexReader.open(path);

reader.deleteDocument(0);//刪除第一個

reader.close();

4.5.2.反刪除

reader.undeleteAll();

4.5.3.按字段刪除

reader.deleteDocuments(new Term("name","word1"));

若要真正物理刪除,則只需使用IndexWriter對索引optimize一次即可!

4.5.4.示例

IndexReader reader=IndexReader.open(path);

?????????? for(int i=0;i<reader.numDocs();i++){

????????????? System.out.println(reader.document(i));

?????????? }

?????????? System.out.println("版本:"+reader.getVersion());

?????????? System.out.println("索引內的文檔數量:"+reader.numDocs());

?????????? //reader.deleteDocuments(new Term("name","word1"));

?????????? Term term1=new Term("name","word1");

?????????? TermDocs docs=reader.termDocs(term1);

?????????? while(docs.next())

?????????? {

????????????? System.out.println("含有所查找的"+term1+"的Document的編號為"+docs.doc());

????????????? System.out.println("Term在文檔中的出現次數"+docs.freq());

?????????? }

?????????? reader.close();

?

4.6. IndexModifier類

集成了IndexWriter的大部分功能和IndexReader中對索引刪除的功能 ------ Lucene2.0的新類

?

4.6.1.示例

public static void main(String[] args) throws Exception {

?????? IndexModifier modifier=new IndexModifier("C:\\Q1",new StandardAnalyzer(),true);

?????? Document doc1=new Document();

?????? doc1.add(new Field("bookname","鋼鐵是怎樣煉成的",Field.Store.YES,Field.Index.TOKENIZED));

?????? Document doc2=new Document();

?????? doc2.add(new Field("bookname","山山水水",Field.Store.YES,Field.Index.TOKENIZED));

?????? modifier.addDocument(doc1);

?????? modifier.addDocument(doc2);

??????

?????? System.out.println(modifier.docCount());

?????? modifier.setUseCompoundFile(false);

?????? modifier.close();

??????

?????? IndexModifier mo=new IndexModifier("C:\\Q1",new StandardAnalyzer(),false);

?????? mo.deleteDocument(0);

?????? System.out.println(mo.docCount());

?????? mo.close();

??? }

?

4.7. IndexSearcher類

4.7.1.構造方法

IndexSearcher searcher = new IndexSearcher(String path);

IndexSearcher searcher = new IndexSearcher(Directory directory);

IndexSearcher searcher = new IndexSearcher(IndexReader r);

IndexSearcher searcher = new IndexSearcher(IndexReader r,Boolean closeReader);

IndexSearcher searcher = new IndexSearcher(path);

IndexSearcher searcher = new IndexSearcher(FSDirectory.getDirectory(path,false) );

4.7.2.search方法

//返回Hits對象

public Hits search(Query query)

public Hits search(Query query,Filter filter)

public Hits search(Query query,Sort sort)

public Hits search(Query query,Filter filter,Sort sort)

?

//檢索只返回得分最高的Document

public TopDocs search(Query query,Filter filter,int n)

public TopDocs search(Weight weight,Filter filter,int n)

public TopFieldDocs search(Weight weight,Filter filter,int n,Sort sort)

public TopFieldDocs search(Query query,Filter filter,int n,Sort sort)

?

//傳入HitCollector,將結果保存在HitCollector中

public void search(Query query,HitCollector results)

public void search(Query query,Filter filter,HitCollector results)

public void search(Weight weight,Filter filter,HitCollector results)

4.7.3.Searcher的explain方法

public Explaination explain(Query query,int doc)throws IOException

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

{

??? Document d=hits.doc(i);

??? System.out.println(i+" "+hits.score(i)+" "+d.get("contents"));

System.out.println(searcher.explain(query,hits.id(i)).toString());

}

4.7.4.示例

IndexSearcher searcher = new IndexSearcher(path);

Hits hits = null;

Query query = null;

?

QueryParser parser =new QueryParser("contents", new StandardAnalyzer());

?

query =parser.parse("11");

hits = searcher.search(query);

System.out.println("查找 word1 共" + hits.length() + "個結果");

?

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

{

??? Document d=hits.doc(i);

??? System.out.println(d+" "+i+" "+hits.score(i)+" "+d.get("contents"));

}

searcher.close();

4.8. Hits類

4.8.1.概述

Hits類――檢索結果

4.8.2.常用方法

?

?

方法名

描述

int length()

返回搜索到結果的總數量

Document doc(int i)

返回第i個文檔

int id(int i)

返回第i個文檔的內部ID

float score(int i)

返回第i個文檔的得分

Iterator iterator()

取得Hits集合的遍歷對象

4.8.3.示例

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

{

??? Document d=hits.doc(i);

??? System.out.println(d+" "+" "+hits.score(i)+" "+d.get("contents"));

System.out.println("文檔的內部ID號:" + hits.id(i));

}

4.9. QueryParser類

4.9.1.改變默認的布爾邏輯

?? 默認為“或”關系

Query query = null;

QueryParser parser =new QueryParser("contents", new StandardAnalyzer());

query =parser.parse("hello world!");

System.out.println(query.toString());

?? 改變默認布爾邏輯

Query query = null;

QueryParser parser =new QueryParser("contents", new StandardAnalyzer());

parser.setDefaultOperator(QueryParser.AND_OPERATOR);

query =parser.parse("hello world");//若world后加!會出錯

System.out.println(query.toString());

?? AND OR NOT – 關鍵字

也可以不用改變默認布爾邏輯,而直接讓用戶在輸入關鍵字時指定不同詞條間的布爾聯系。例如,用戶輸入 hello AND world? 必須為大寫

邏輯與:AND (大寫)

邏輯或:OR? (大寫)

邏輯非:-?? 例如: hello - world

也可以是NOT? 例如: hello NOT world

4.9.2.不需要分詞

不進行分詞,將其完整的作為一個詞條進行處理,則需要在詞組的外面加上引號

String queryStr="\"God helps those who help themselves\"";

QueryParser parser = new QueryParser("bookname",new StandardAnalyzer());

parser.setDefaultOperator(QueryParser.AND_OPERATOR);

Query query=parser.parse(queryStr);

System.out.println(query.toString());

4.9.3.設置坡度值,支持FuzzyQuery

String queryStr="\"God helps those who help themselves\"~1";//設置坡度為1

QueryParser parser = new QueryParser("bookname",new StandardAnalyzer());

Query query=parser.parse(queryStr);

System.out.println(query.toString());

4.9.4.設置通配符,支持WildcardQuery

String queryStr="wor?"

QueryParser parser = new QueryParser("bookname",new StandardAnalyzer());

parser.setDefaultOperator(QueryParser.AND_OPERATOR);

Query query=parser.parse(queryStr);

System.out.println(query.toString());

4.9.5.查找指定的Field

String queryStr="linux publishdate:2006-09-01";

QueryParser parser = new QueryParser("bookname",new StandardAnalyzer());

parser.setDefaultOperator(QueryParser.AND_OPERATOR);

Query query=parser.parse(queryStr);

System.out.println(query.toString());

例如:要求用戶選擇某一方面的

QueryParser parser=new QueryParser("publishdate",

new StandardAnalyzer());

Query query=parser.parse(queryStr);

System.out.println(query.toString());

?

輸出結果為publishdate:[081xmghs0 TO 0boeetj3z]

因為建立索引時,如果按照日期表示的字符串來進行索引,實際上比較的是字符串的字典順序。而首先將日期轉為以毫秒計算的時間后,則可以精確地比較兩個日期的大小了。于是,lucene提供DateTools工具,用來完成其內部對時間的轉化和處理,將毫秒級的時間轉化為一個長字符串來進行表示,并進行索引。所以,遇到日期型數據時,最好用DateTools進行轉換,再進行索引!

4.9.7.現在還不支持SpanQuery

4.10.??????? MultiFieldQueryParser類--多域搜索

//在不同的Field上進行不同的查找

public static Query parse(String []queries,String[] fields,Analyzer analyzer)throws ParseException

?

//在不同的Field上進行同一個查找,指定它們之間的布爾關系

public static Query parse(String query,String[] fields,BooleanClause.Occur[] flags,Analyzer analyzer) throws ParseException

?

//在不同的Field上進行不同的查找,指定它們之間的布爾關系

public static Query parse(String []queries,String [] fields,BooleanClause.Occur[] flags,Analyzer analyzer)throws ParseException

String [] queries={"鋼", "[10 TO 20]"};

String[] fields={“bookname”,”price”};

BooleanClause.Occur[] clauses={BooleanClause.Occur.MUST,BooleanClause.Occur.MUST};

Query query=MultiFieldQueryParser.parse(queries,fields,clauses,new StandardAnalyzer());

System.out.println(query.toString());

?

4.11.??????? MultiSearcher類--多個索引搜索

IndexSearcher searcher1=new IndexSearcher(path1);

IndexSearcher searcher2=new IndexSearcher(path2);

IndexSeacher [] searchers={searcher1,seacher2};

MultiSearcher searcher=new MultiSearcher(searchers);

Hits hits=searcher.search(query);

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

??? System.out.println(hits.doc(i));

}

4.12.??????? ParalellMultiSearcher類---多線程搜索

IndexSearcher searcher1=new IndexSearcher(path1);

IndexSearcher searcher2=new IndexSearcher(path2);

IndexSearcher [] searchers={searcher1,searcher2};

ParallelMultiSearcher searcher=new ParallelMultiSearcher(searchers);

long start=System.currentTimeMillis();

Hits hits=searcher.search(query);

long end=System.currentTimeMillis();

System.out.println((end-start)+"ms");

5.??? 排序

5.1. Sort類

public Sort()

public Sort(String field)

public Sort(String field,Boolean reverse)? //默認為false,降序排序

public Sort(String[] fields)

public Sort(SortField field)

public Sort(SortField[] fields)

Sort sort=new Sort(“bookname”);按照“bookname“這個Field值進行降序排序

Sort sort=new Sort(“bookname”,true) //升序排序

Sort sort=new Sort(new String[]{“bookNumber”,”bookname”,”publishdate”});按照三個Field進行排序,但無法指定升序排序,所以用SortField

5.2. SortField類

public SortField(String field)

public SortField(String field,Boolean reverse)

public SortField(String field,int type) //type表示當前Field值的類型

public SortField(String field,int type,boolean reverse)? //默認為false,升序

Field值的類型:SortField.STRING、SortField.INT、SortField.FLOAT

SortField sf1=new SortField(“bookNumber”,SortField.INT,false);

SortField sf2=new SortField(“bookname”,SortField.STRING,false);

5.3. 指定排序的法則

5.3.1.按照文檔的得分降序排序

Hits hits=searcher.search(query,Sort.RELEVANCE);

5.3.2.按文檔的內部ID升序排序

Hits hits=searcher.search(query, Sort.INDEXORDER);

5.3.3.按照一個Field來排序

Sort sort=new Sort();

SortField sf=new SortField(“bookNumber”,SortField.INT,false);

sort.setSort(sf);

Hits hits=searcher.search(query,sort);

5.3.4.按照多個Field來排序

Sort sort=new Sort();

SortField sf1=new SortField(“bookNumber”,SortField.INT,false);//升序

SortField sf2=new SortField(“publishdate”,SortField.STRING,true);//降序

sort.setSort(new SortField[]{sf1,sf2});

Hits hits=searcher.search(query,sort);

5.3.5.改變SortField中的Locale信息

String str1=”我”; String str2=”你”;

Collator co1=Collator.getInstance(Locale.CHINA);

Collator co2=Collator.getInstance(Locale.JAPAN);

System.out.println(Locale.CHINA+”:”+co1.compare(str1,str2));

System.out.println(Locale.JAPAN+”:”+co2.compare(str1,str2));

輸出結果為:

zh_CN:1

ja_JP:-1

所以

public SortField(String field,Locale locale)

public SortField(String field,Locale locale,boolean reverse)

6.??? 過濾器

使用public Hits search(Query query,Filter filter)

(1)簡單過濾

Hits hits=searcher.search(query,new AdvancedSecurityFilter());//過濾掉securitylevel為0的結果

(2)范圍過濾—RangeFilter

只顯示中間的

RangeFilter filter=new RangeFilter(“publishdate”,”1970-01-01”,”1998-12-31”,true,true”);

Hits hits=searcher.search(query,filter);

?

無上邊界

public static RangeFilter More(String fieldname,String lowerTerm)

?

無下邊界

public static RangeFilter Less(String fieldname,String upperTerm)

(3)在結果中查詢QueryFilter

RangeQuery q=new RangeQuery(new Term(“publicshdate”,”1970-01-01”),

new Term(“publishdate”,”1999-01-01”),true);

QueryFilter filter=new QueryFilter(q);

Hits hits=searcher.search(query,filter);

7.??? 分析器Analysis

7.1. 自帶分析器和過濾器

?? 標準過濾器:StandardAnalyzer

?? 大小寫轉換器:LowerCaseFilter

?? 忽略詞過濾器:StopFilter

public StopFilter(TokenStream input,String [] stopWords)

public StopFilter(TokenStream in,String [] stopWords,boolean ignoreCase)

public StopFilter(TokenStream input,Set stopWords,boolean ignoreCase)

public StopFilter(TokenStream in, Set stopWords)

其中,參數TokenStream代表當前正在進行處理的流;String類型的數組代表一個用數組表示的忽略詞集合;Set類型的參數與String一樣,是用來表示忽略詞集合的;boolean表示當與忽略詞集合中的詞進行匹配時,是否需要忽略大小寫。

?? 長度過濾器:LengthFilter

?? PerFieldAnalyzerWrapper

?? WhitespaceAnalyzer

String str="str1 str2 str3";

?????? StringReader reader=new StringReader(str);

?????? Analyzer anlyzer=new WhitespaceAnalyzer();

??????

?????? TokenStream ts=anlyzer.tokenStream("", reader);

?????? Token t=null;

?????? while( (t=ts.next())!=null ){

?????????? System.out.println(t.termText());

?????? }

7.2. 第三方過分析器

?? 單字分詞

?? 二分法:CJKAnalyzer、中科院ICTCLAS分詞、JE分詞

?? 詞典分詞

7.2.1.JE分詞用法

7.2.1.1.?? 示例

import jeasy.analysis.MMAnalyzer;

IndexWriter writer = new IndexWriter(INDEX_STORE_PATH, new MMAnalyzer()

, true);

String str=" Lucene是一個全文檢索引擎的架構,"+

?????????? "提供了完整的查詢引擎和索引引擎。Lucene以其方便使用、快" +

?????????? "速實施以及靈活性受到廣泛的關注。它可以方便地嵌入到各種應用" +

?????????? "中實現針對應用的全文索引、檢索功能,本總結使用lucene--2.3.2。";

?????? MMAnalyzer analyzer=new MMAnalyzer();

?????? try{

?????????? System.out.println(analyzer.segment(str, "|"));

?????? }

?????? catch(Exception e)

?????? {

?????????? e.printStackTrace();

?????? }

輸出結果:lucene|一個|全文|檢索|引擎|架構|提供|完整|查詢|。。。。

7.2.1.2.?? 設定正向最大匹配的字數

MMAnalyzer analyzer=new MMAnalyzer(4);

7.2.1.3.?? 添加新詞

MMAnalyzer.addWord(String word);

MMAnalyzer.addDictionary(Reader reader);

?

MMAnalyzer analyzer=new MMAnalyzer();

MMAnalyzer.addWord("邁克爾雷第");

?

8.??? 索引的合并

RAMDirectory RAMDir=new RAMDirectory();

IndexWriter writer = new IndexWriter(RAMDir, new StandardAnalyzer(), true);//刪除原有索引

IndexWriter writer2=new IndexWriter(FSDirectory.getDirectory(path,true),

new StandardAnalyzer(), true);

writer.addDocument(doc1);

writer2.addDocument(doc2);

writer.close();

writer2.addIndexes(new Directory[]{RAMDir});

writer2.close();

注意:在合并前一定要先關閉要加的索引器。

9.??? 各種Query

9.1. 概述

query.toString()查看原子查詢

9.2. 使用特定的分析器搜索

IndexSearcher searcher = new IndexSearcher(path );

Hits hits = null;

Query query = null;

QueryParser parser =new QueryParser("contents", new StandardAnalyzer());

query =parser.parse("11 aand hello");

hits=searcher.search(query); //查找 name:11 name:hello 共1個結果

System.out.println("查找 "+query.toString()+" 共" + hits.length() + "個結果");

9.3. 按詞條搜索—TermQuery

Query query = null;

query=new TermQuery(new Term("name","word1 aand"));

hits=searcher.search(query);// 查找 name:word1 aand 共0個結果

System.out.println("查找 "+query.toString()+" 共" + hits.length() + "個結果");

9.4. 按“與或”搜索—BooleanQuery

1.和: MUST與MUST_NOT

2.或: SHOULD與SHOULD

3.A與B的并集-B? MUST與MUST_NOT

Query query1=null;

Query query2=null;

BooleanQuery query=null;

query1=new TermQuery(new Term("name","word1"));

query2=new TermQuery(new Term("name","word2"));

query=new BooleanQuery();

query.add(query1,BooleanClause.Occur.MUST);

query.add(query2,BooleanClause.Occur.MUST_NOT);

9.5. 在某一范圍內搜索—RangeQuery

Term beginTime=new Term("time","200001");

Term endTime=new Term("time","200005");

RangeQuery query=null;

query=new RangeQuery(beginTime,endTime,false);//不包含邊界值

9.6. 使用前綴搜索—PrefixQuery

Term pre1=new Term("name","wor");

PrefixQuery query=null;

query = new PrefixQuery(pre1);

9.7. 短語搜索—PhraseQuery

a)默認坡度為0

PhraseQuery query = new PhraseQuery();

query.add(new Term(“bookname”,”鋼”));

query.add(new Term(“bookname”,”鐵”));

Hits hits=searcher.search(query); //搜索“鋼鐵”短語,而非“鋼”和“鐵”

b)設置坡度,默認為0

PhraseQuery query = new PhraseQuery();

query.add(new Term(“bookname”,”鋼”));

query.add(new Term(“bookname”,”鐵”));

query.setSlop(1);

Hits hits=searcher.search(query);//搜索“鋼鐵”或“鋼*鐵”中含一字

9.8. 多短語搜索—MultiPhraseQuery

a)

MultiPhraseQuery query=new MultiPhraseQuery();

//首先向其中加入要查找的短語的前綴

query.add(new Term(“bookname”,”鋼”));

//構建3個Term,作為短語的后綴

Term t1=new Term(“bookname”,”鐵”);

Term t2=new Term(“bookname”,”和”);

Term t3=new Term(“bookname”,”要”);

//再向query中加入所有的后綴,與前綴一起,它們將組成3個短語

query.add(new Term[]{t1,t2,t3});

Hits hits=searcher.search(query);

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

??? System.out.println(hits.doc(i));

b)

MultiPhraseQuery query=new MultiPhraseQuery();

Term t1=new Term(“bookname”,”鋼”);

Term t2 = new Term(“bookname”,”和”);

query.add(new Term[]{t1,t2});

query.add(new Term(“bookname”,”鐵”));

c)

MultiPhraseQuery query=new MultiPhraseQuery();

Term t1=new Term(“bookname”,”鋼”);

Term t2 = new Term(“bookname”,”和”);

query.add(new Term[]{t1,t2});

query.add(new Term(“bookname”,”鐵”));

Term t3=new Term(“bookname”,”是”);

Term t4=new Term(“bookname”,”戰”);

query.add(new Term[]{t3,t4});

9.9. 模糊搜索—FuzzyQuery

使用的算法為levenshtein算法,在比較兩個字符串時,將動作分為3種:

l? 加一個字母

l? 刪一個字母

l? 改變一個字母

FuzzyQuery query=new FuzzyQuery(new Term(“content”,”work”));

?

public FuzzyQuery(Term term)

public FuzzyQuery(Term term,float minimumSimilarity)throws IllegalArgumentException

public FuzzyQuery(Term term,float minimumSimilarity,int prefixLength)throws IllegalArgumentException

其中minimumSimilarity為最小相似度,越小則文檔的數量越多。默認為0.5.其值必須<1.0

FuzzyQuery query=new FuzzyQuery(new Term(“content”,”work”),0.1f);

其中prefixLength表示要有多少個前綴字母必須完全匹配

FuzzyQuery query=new FuzzyQuery(new Term(“content”,”work”),0.1f,1);

9.10.??????? 通配符搜索—WildcardQuery

* 表示0到多個字符

? 表示一個單一的字符

WildcardQuery query=new WildcardQuery(new Term(“content”,”?qq*”));

9.11.??????? 跨度搜索

9.11.1.????? SpanTermQuery

效果和TermQuery相同

SpanTermQuery query=new SpanTermQuery(new Term(“content”,”abc”));

9.11.2.????? SpanFirstQuery

從Field內容的起始位置開始,在一個固定的寬度內查找所指定的詞條

SpanFirstQuery query=new SpanFirstQuery(new Term(“content”,”abc”),3);//是第3個word,不是byte

9.11.3.????? SpanNearQuery

SpanNearQuery相當與PhaseQuery

SpanTermQuery people=new SpanTermQuery(new Term(“content”,”mary”));

SpanTermQuery how=new SpanTermQuery(new Term(“content”,”poor”));

SpanNearQuery query=new SpanNearQuery(new SpanQuery[]{people,how},3,false);

9.11.4.????? SpanOrQuery

把所有SpanQuery的結果合起來

SpanTermQuery s1=new SpanTermQuery(new Term(“content”,”aa”);

SpanTermQuery s2=new SpanTermQuery(new Term(“content”,”cc”);

SpanTermQuery s3=new SpanTermQuery(new Term(“content”,”gg”);

SpanTermQuery s4=new SpanTermQuery(new Term(“content”,”kk”);

SpanNearQuery query1=new SpanNearQuery(new SpanQuery[]{s1,s2},1,false);

SpanNearQuery query2=new SpanNearQuery(new SpanQuery[]{s3,s4},3,false);

SpanOrQuery query=new SpanOrQuery(new SpanQuery[]{query1,query2});

9.11.5.????? SpanNotQuery

從第1個SpanQuery的查詢結果中,去掉第2個SpanQuery的查詢結果

SpanTermQuery s1=new SpanTermQuery(new Term(“content”,”aa”);

SpanFirstQuery query1=new SpanFirstQuery(s1,3);

?

SpanTermQuery s3=new SpanTermQuery(new Term(“content”,”gg”);

SpanTermQuery s4=new SpanTermQuery(new Term(“content”,”kk”);

SpanNearQuery query2=new SpanNearQuery(new SpanQuery[]{s3,s4},4,false);

?

SpanNotQuery query=new SpanNotQuery(query1,query2);

9.12.??????? RegexQuery—正則表達式的查詢

String regex="http://[a-z]{1,3}\\.abc\\.com/.*";

?????? RegexQuery query=new RegexQuery(new Term("url",regex));

?

10.?? 評分機制

10.1.??????? 概述

通過searcher.explain(Query query, int doc)方法可以查看某個文檔的得分的具體構成。

在Lucene中score簡單說是由 tf * idf * boost * lengthNorm計算得出的。

1)??????? tf:Term Frequency.詞條頻率,是查詢的詞在文檔中出現的次數的平方根

2)??????? idf:表示反轉文檔頻率,Math.log(numDocs/(double)(docFreq+1))+1.0?? docDocs表示當前檢索的詞條的文檔總數, numDocs表示索引中總共的文檔數量

3)??????? boost:激勵因子,可以通過setBoost方法設置,需要說明的通過field和doc都可以設置,所設置的值會同時起作用 。默認為1.boost的值是在索引建立的時候已經寫入了,而不像其他計算得分的因子是在查詢時實時得出的。因此,一旦boost值被寫入,就不能修改它,除非重新建立文檔索引。

4)??????? lengthNorm:是由搜索的field的長度決定了,越長文檔的分值越低。

11.?? Lucene的索引“鎖”

1.??? write.lock

2.??? commit.lock

?

轉載于:https://my.oschina.net/lujian863/blog/152018

總結

以上是生活随笔為你收集整理的lucene 入门整理的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

久草在线手机观看 | 韩国中文三级 | 97成人精品视频在线观看 | 久久久久久久久久久久久9999 | 日日夜夜精品 | 91视频网址入口 | 天天玩夜夜操 | 色综合人人 | 久久99深爱久久99精品 | 国产精品一区在线播放 | 亚洲精品玖玖玖av在线看 | 亚洲欧洲国产精品 | 日韩三级视频在线观看 | 91热视频 | 奇米影视在线99精品 | 久草在线观看资源 | 国产电影一区二区三区四区 | 久久韩国免费视频 | 天天综合导航 | 久久国产片| 久久久精品久久日韩一区综合 | 麻豆av一区二区三区在线观看 | 四虎免费在线观看 | 久久久久久久久久久高潮一区二区 | 欧美性免费 | 狠狠色丁香九九婷婷综合五月 | a级国产乱理伦片在线播放 久久久久国产精品一区 | 日本精品久久久一区二区三区 | 六月丁香在线观看 | 在线观看a视频 | 久在线| 亚洲视频 在线观看 | 亚洲人天堂 | 国产97色在线| 国产一线天在线观看 | 亚洲码国产日韩欧美高潮在线播放 | 免费看黄网站在线 | 免费看黄视频 | 久久狠狠一本精品综合网 | 精品福利片| 五月婷婷综合激情 | 黄色三级在线 | 91香蕉视频720p | 午夜精品一区二区三区在线视频 | 啪啪午夜免费 | 成人h在线播放 | 国产91国语对白在线 | 中文字幕资源网 | 日韩专区中文字幕 | 日韩系列 | 国产视频一级 | 蜜桃av久久久亚洲精品 | 韩日电影在线 | a黄色影院| 成人av网站在线观看 | 亚洲精品视频在线观看免费视频 | 久久国产精品免费 | 91国内产香蕉 | www五月天com| 中文字幕免费在线看 | 国产r级在线观看 | 久久精品一区二区三区中文字幕 | 精品久久视频 | 亚洲激色 | 久久久av电影 | 成人小视频在线 | 婷婷亚洲综合五月天小说 | 国产精彩视频 | 精品一区精品二区高清 | 91视频啊啊啊 | 日韩免费av片 | 色婷婷播放 | 五月天激情综合 | 婷婷激情五月 | 韩日av一区二区 | 欧美精品三级在线观看 | 中文字幕一区二区在线播放 | 国产精品亚洲综合久久 | 天天色天天色 | 久草在线免费资源站 | 国产成人精品电影久久久 | 成年人在线观看免费视频 | 国产一区二区久久久 | 免费精品在线 | 久久深爱网 | 中文字幕高清免费日韩视频在线 | 成人av电影在线播放 | 国产区网址 | 狠狠的操狠狠的干 | 樱空桃av | 91中文字幕永久在线 | 国产无遮挡又黄又爽馒头漫画 | 欧美xxxxx在线视频 | 亚洲天堂在线观看完整版 | 亚洲日日夜夜 | 中文资源在线官网 | 久久久久久黄 | 最新国产精品亚洲 | 在线日本看片免费人成视久网 | 国产精品久久久久久婷婷天堂 | 天天操天天爽天天干 | 欧美日本不卡 | 91视频专区| 久久激情影院 | 高清久久久 | 国产录像在线观看 | 超碰在线人人 | 九九九九九九精品任你躁 | 欧美视频网址 | 免费色网 | 黄色av一区二区三区 | 天天视频色版 | 99视频国产精品 | 国产伦理一区二区 | 成片人卡1卡2卡3手机免费看 | 成年人av在线播放 | av在线一二三区 | 一区二区影院 | 欧美男男tv网站 | 国产极品尤物在线 | 国产精品免费久久久久影院仙踪林 | 天天操夜夜操国产精品 | 在线看国产一区 | 99精品国产视频 | 亚洲天堂色婷婷 | 人人射| 亚洲精品色婷婷 | 99视频在线精品国自产拍免费观看 | 色99中文字幕 | 久久免费福利视频 | 97操碰| 久久激情五月激情 | 久久精品成人 | 免费韩国av| 成人午夜影视 | 日韩国产精品一区 | 亚洲精选视频免费看 | 亚洲国产午夜 | 亚洲欧美国产精品久久久久 | 97电影网手机版 | 一二三精品视频 | 天天综合网天天 | 日韩一区二区三区观看 | av成人在线观看 | 成人欧美日韩国产 | 成人午夜在线观看 | 久久中文网| 九九视频在线观看视频6 | 国产精品麻豆欧美日韩ww | 97在线观看视频免费 | 天天操天天摸天天干 | 久草视频免费在线播放 | 亚洲精品视频在线播放 | 天天搞天天干 | 99在线视频播放 | 99视频免费观看 | 国产一级做a | 欧美色噜噜噜 | 精品视频 | 99久久综合国产精品二区 | 色五月色开心色婷婷色丁香 | 日韩精品一区二区在线观看视频 | 亚洲区另类春色综合小说 | 91电影福利 | 91精品一区二区三区久久久久久 | 日韩视频免费 | 国产精品美女久久久久久久久 | 日韩激情综合 | 黄色av大片 | 久久久96 | 四虎永久精品在线 | 成人网中文字幕 | 亚洲日本国产精品 | 网站在线观看日韩 | 亚洲高清免费在线 | 久久久麻豆 | 6699私人影院| 五月婷婷色丁香 | 91精品视频免费 | 激情深爱.com | 免费视频一二三区 | 久久经典视频 | 99久久精品国产观看 | 亚洲成人精品国产 | 91桃色免费观看 | 国产视频在线看 | 91av在线视频播放 | 欧美精品一区在线 | 99在线高清视频在线播放 | 国产精品美女久久久久久2018 | 久草在线费播放视频 | 国产精品一区二区在线观看 | 亚洲视频久久久 | 日韩精品久久久久久中文字幕8 | 丁香六月综合网 | 日韩在线观看视频中文字幕 | 亚洲专区欧美专区 | 日日爱影视 | 91在线视频一区 | 玖玖在线免费视频 | 国产精品久久艹 | 天天干人人插 | 精品视频一区在线 | 亚洲网站在线 | 一本一本久久a久久精品综合小说 | 国产91勾搭技师精品 | 久草精品免费 | 欧美精品被 | 综合中文字幕 | 黄色aa久久| 国产亚洲欧美日韩高清 | 亚洲激情 在线 | 色综合久久久久久中文网 | 色综合天天综合 | 国产精品正在播放 | 久久成人18免费网站 | 韩国av在线播放 | 国产精品久久久视频 | 久久久久欠精品国产毛片国产毛生 | 天天操比| 特黄色大片 | 大型av综合网站 | 日日爱999| 亚洲精品日韩一区二区电影 | 日韩黄色免费看 | 国产精品久久一区二区三区, | 亚洲国产日韩精品 | 中国老女人日b | 国产精品免费一区二区 | 亚洲综合色激情五月 | 久久99亚洲精品久久 | 黄色毛片视频免费观看中文 | 成人免费在线观看av | 婷婷婷国产在线视频 | 欧美精品乱码久久久久久 | 99热精品视 | 久久av电影 | 狠狠色丁香久久婷婷综 | 色婷婷亚洲 | 奇米网网址 | 97超碰在线久草超碰在线观看 | 综合色综合色 | 最近久乱中文字幕 | 免费看一级特黄a大片 | 欧美91精品国产自产 | 日韩在线观看视频网站 | 91人网站 | 久久高清免费视频 | 韩国av一区二区 | 天天干天天射天天操 | 99久久夜色精品国产亚洲96 | 在线观看av的网站 | 在线观看国产中文字幕 | 亚洲精品www久久久 www国产精品com | 亚洲日日日 | 青青河边草手机免费 | 狠狠干 狠狠操 | 欧美极度另类性三渗透 | 亚洲成人国产 | 毛片网在线 | 国产成人久久77777精品 | 园产精品久久久久久久7电影 | 一区二区视频播放 | av字幕在线 | 狠狠色丁香婷婷综合视频 | 精品成人a区在线观看 | 久久er99热精品一区二区三区 | 欧美一进一出抽搐大尺度视频 | 免费人人干 | 欧美一区二区日韩一区二区 | 成人av免费在线播放 | 成人av资源网 | 中文字幕亚洲精品在线观看 | 久草在线视频免费资源观看 | 久久国产精品免费观看 | 182午夜在线观看 | 开心激情网五月天 | 色999五月色| 中文字幕亚洲精品日韩 | 精品色999 | 香蕉视频一级 | 香蕉影视在线观看 | 国产美女被啪进深处喷白浆视频 | 一区二区三区在线不卡 | 久久久久久久18 | 91片网| 色综合久久久久综合体桃花网 | 中文在线a∨在线 | av网址最新| 中文字幕高清 | 手机成人免费视频 | 成人免费网站视频 | 超碰在线资源 | 中午字幕在线 | 色爱区综合激月婷婷 | 久草久视频 | 亚洲激情p| 成在线播放 | 日韩精品一区电影 | 日韩最新中文字幕 | 久久人视频 | 一级性生活片 | 久久草在线视频国产 | 午夜av电影院| 深夜男人影院 | 激情视频二区 | av中文在线 | 黄色三级免费网址 | 精品国产诱惑 | 久久综合狠狠综合久久综合88 | 碰碰影院| 91久久精品一区二区三区 | 久久婷婷开心 | 日韩高清免费观看 | 天天综合网 天天 | 亚洲涩涩色 | 在线观看免费观看在线91 | 婷婷国产一区二区三区 | 久草精品视频在线观看 | 久久久久国产精品www | 亚洲成人家庭影院 | av大片网址| 五月天久久综合 | 一级欧美一级日韩 | 视频二区在线 | 亚洲片在线观看 | 视频在线在亚洲 | 97色婷婷成人综合在线观看 | 在线观看第一页 | 色爽网站| 国产精品嫩草影院99网站 | 日韩欧美精品在线 | 福利视频| a在线观看国产 | 国产视频亚洲视频 | 91爱爱网址 | 欧美日韩在线播放一区 | 99视频免费在线观看 | 在线v片免费观看视频 | 成人国产网址 | 麻花豆传媒mv在线观看网站 | 亚洲精品免费在线观看视频 | 97在线免费观看 | 久久激情视频 | 亚洲综合成人婷婷小说 | 亚洲国产欧洲综合997久久, | 久久大视频 | 国产福利资源 | 91色九色 | 久久精品伊人 | 激情久久综合 | 射射射av| 午夜天使| 免费看国产视频 | 夜色在线资源 | 91亚洲狠狠婷婷综合久久久 | 久久精品免费观看 | 国产中文字幕亚洲 | 超碰九九| 国产精品久久久久久久久久妇女 | 国产精品一区二区白浆 | 91系列在线 | 丁香婷婷深情五月亚洲 | 久久久久国产一区二区三区四区 | 国产日韩视频在线播放 | 综合色婷婷 | 天天操夜操视频 | 国产精品1区2区3区在线观看 | 久久精品久久精品久久精品 | 久草在线免费资源站 | 久久综合免费视频 | 亚洲精品久久久久www | 国产精品精品国产婷婷这里av | 精品久久国产精品 | 国产精品成人国产乱 | 天堂久色 | 亚洲九九九在线观看 | 伊人在线视频 | 久久精品黄色 | av在线免费网 | 亚洲九九精品 | 久久免费看 | 成人教育av | 日韩精品一区二区三区视频播放 | 欧美aa级 | a国产精品| 一区av在线播放 | 国产日韩视频在线 | 狠狠色丁香婷婷综合久久片 | 最近能播放的中文字幕 | 人人狠狠综合久久亚洲 | 久久免费视频6 | 一区精品久久 | 夜夜高潮夜夜爽国产伦精品 | 久久日本视频 | av在线免费播放网站 | 日韩免费高清在线观看 | 久久精品一区二区三区四区 | 欧美另类xxxxx | 成人av一区二区兰花在线播放 | 波多野结衣电影一区二区 | 国产精品第一页在线观看 | 久日精品| 精精国产xxxx视频在线播放 | 欧美小视频在线 | 一区二区三区在线影院 | 国产精品久久久 | 国内精品久久久久久久久久久久 | 色综合久久88 | 亚州av一区 | 亚洲最大成人免费网站 | 伊人射 | 婷婷综合成人 | 91福利小视频 | 免费高清看电视网站 | 91福利视频在线 | www.色就是色 | www.久久久.cum| 国产精品毛片一区视频播不卡 | 天天操天天摸天天爽 | 欧美激情综合五月 | 波多野结衣在线播放一区 | 在线中文字幕一区二区 | 国产一区欧美二区 | 日韩国产精品毛片 | 久久网址 | 五月综合色婷婷 | av动图 | 超碰97在线资源站 | 国产精品xxxx18a99 | 久久99热精品 | 丝袜美腿av| 精品久久99| 欧美一级黄大片 | 国产一级性生活视频 | 天天综合网天天 | 黄污视频大全 | 91完整视频 | 日韩电影一区二区在线 | 亚洲日韩精品欧美一区二区 | 国产综合在线观看视频 | 国产一区福利 | 日本狠狠色 | 99热在线观看免费 | 成人精品999| 中文字幕在线高清 | 福利一区二区三区四区 | 波多野结衣最新 | 国产精品18久久久久白浆 | 国产美女久久 | 中文字幕视频免费观看 | 精品产品国产在线不卡 | 四虎伊人| 日韩在线视频播放 | av网站手机在线观看 | 免费黄色在线网址 | 国产色秀视频 | 精品久久91 | 成人av电影在线观看 | 丁香激情视频 | 久久精品国产免费看久久精品 | 人人干人人添 | 日韩高清www | 成人欧美日韩国产 | 欧美成天堂网地址 | 天天爽天天碰狠狠添 | 亚洲视频网站在线观看 | 黄色小说在线免费观看 | 精品一区电影 | 97久久精品午夜一区二区 | 欧美日韩在线视频观看 | 亚洲视频久久久 | 久久中文精品视频 | 丁香婷婷电影 | 国内视频1区 | 欧美日韩亚洲一 | 久草五月 | 天天天干天天射天天天操 | 在线观看免费 | 在线小视频你懂的 | 欧美专区国产专区 | 黄视频网站大全 | av中文字幕不卡 | 18做爰免费视频网站 | 亚洲一区网站 | 99 久久久久 | 亚洲精品视频www | av黄色免费网站 | 国外av在线 | 国产1区在线观看 | aaa免费毛片 | 在线免费性生活片 | 免费a v视频 | 激情视频一区二区三区 | 黄色免费网站下载 | 99视频+国产日韩欧美 | 51久久成人国产精品麻豆 | 欧美 日韩 视频 | 国产成在线观看免费视频 | 特级黄色电影 | 午夜久久影视 | 91字幕| av在线看片| 黄色高清视频在线观看 | 久久高清片 | 麻豆视频免费观看 | 国产精品破处视频 | 欧美精品久久久久久久久免 | 99视频在线精品国自产拍免费观看 | 99久国产 | 国产黄色在线观看 | 福利视频第一页 | 一本一道久久a久久精品 | 久久久激情视频 | 九九99| 99久久日韩精品视频免费在线观看 | 国产中文字幕久久 | 97超碰人人网 | 97香蕉久久超级碰碰高清版 | 色久综合| 99久久精品免费看国产一区二区三区 | 国产成人精品久 | 成人在线视频免费 | 黄色91免费观看 | 久久久久国产精品www | 久久久久久国产一区二区三区 | 亚洲草视频 | 精品一区二区在线免费观看 | 国产xx在线| 欧美成人在线免费 | 色在线视频 | 色wwwww| 人人干狠狠操 | 91插插插免费视频 | 91成人免费在线 | 日本色小说视频 | 99国产精品免费网站 | 91视频免费看 | 在线电影中文字幕 | 国产九色91 | 久久精品福利视频 | 9999亚洲 | 超碰人人做 | 亚洲国产精品成人女人久久 | 日韩欧美综合在线视频 | 亚洲精品乱码久久久久久按摩 | 99免费观看视频 | 亚洲va男人天堂 | 在线免费观看视频一区二区三区 | 麻豆视频免费入口 | 夜夜夜夜夜夜操 | 夜夜夜影院 | 日韩精品久久久 | 国产一区在线免费观看视频 | 久久手机视频 | 久久y | 国产婷婷精品av在线 | 一区二三国产 | 国产69精品久久久久久久久久 | 91九色国产视频 | 九九九九免费视频 | 欧洲不卡av | 亚洲激情p | 久久这里| 久久福利 | 久久久91精品国产一区二区三区 | 国产日韩精品一区二区三区 | 色综合久久久久久久 | 精品国产黄色片 | 久久免费视频这里只有精品 | 中文字幕有码在线播放 | 日韩一区二区三区观看 | 欧美有色 | 免费观看全黄做爰大片国产 | 手机在线看a | 久久综合成人 | 天天操夜夜操国产精品 | 亚洲视频在线观看免费 | 久久国产精品99久久人人澡 | 九九热在线视频免费观看 | 超碰日韩 | 国产香蕉av| 国产精品久久久久久久久久免费 | 激情偷乱人伦小说视频在线观看 | 美腿丝袜av | 91福利在线观看 | 日本韩国欧美在线观看 | 在线三级中文 | 成人免费看片98欧美 | 夜夜躁狠狠燥 | 国产亚洲片 | 欧美污污网站 | 日本在线观看一区 | 亚洲精品永久免费视频 | 欧美日韩视频免费看 | 日本久久久久久久久久 | 在线观看色网站 | 婷五月天激情 | 超碰电影在线观看 | 国产91对白在线 | 精品国产乱码久久久久久1区二区 | 天天草网站| 久草在线视频看看 | 丁香六月婷婷开心婷婷网 | 亚洲综合国产精品 | 综合亚洲视频 | 久草热视频| 国产一区在线观看免费 | 欧美日韩国产一二三区 | 国产精选在线 | 欧美一级性生活 | 在线看片一区 | 亚洲精品国精品久久99热一 | www在线免费观看 | 天天视频亚洲 | 久久一视频 | 亚洲国产成人在线 | 日韩字幕 | 午夜av影院 | 99久久婷婷国产精品综合 | 日韩成片 | 久久国产精品一区二区 | 免费中文字幕 | 亚洲三级黄色 | 精品国产亚洲日本 | 免费在线黄 | 伊人婷婷 | 久久久高清一区二区三区 | 成人综合日日夜夜 | 亚洲精品乱码久久久久久高潮 | 欧美黄污视频 | 99视频这里只有 | 国产精品人成电影在线观看 | 97视频资源 | 亚洲黄色区| 日韩av一区二区在线 | 日韩有码第一页 | 在线看一级片 | 91看片淫黄大片在线播放 | 久久免费精品一区二区三区 | 久久最新网址 | 91精品国自产在线观看 | 中文字幕免费看 | 久久久www成人免费精品 | 综合国产在线观看 | 最新不卡av | 久久免费av | av在线播放国产 | 国产精品久久久影视 | 天天射天天爽 | 欧美激情精品久久久 | 亚洲国产免费看 | 国产a高清 | 高潮久久久 | 日韩av图片 | 久久第四色| 久久九九国产精品 | 精品高清美女精品国产区 | 亚洲不卡av一区二区三区 | 亚洲人天堂 | 三级大片网站 | 欧美视频国产视频 | 午夜国产一区 | 91在线成人 | 日韩精品一区二区三区在线视频 | 欧美午夜一区二区福利视频 | av成年人电影 | 福利一区视频 | 日韩高清一二三区 | 91一区一区三区 | 国产又黄又爽无遮挡 | 午夜私人影院久久久久 | 黄色av一级| 永久免费看av| 国产一区二区免费看 | 久久久久久片 | 亚洲 av网站| 日本资源中文字幕在线 | 最近高清中文在线字幕在线观看 | 国内精品久久久久久久久久久 | 日韩精品一区二区三区免费观看视频 | 成人免费看片98欧美 | 西西444www大胆无视频 | 精品视频不卡 | 欧美日韩精品免费观看视频 | 97在线影视 | 国产区免费| 成人av手机在线 | 麻豆91在线 | 91亚洲精品在线 | 91在线免费观看网站 | 91大神dom调教在线观看 | 在线免费中文字幕 | 日韩精品久久一区二区 | 久久久久国产精品一区 | 黄色在线观看免费网站 | av一区在线播放 | 97操碰 | 超碰在线中文字幕 | 久草视频资源 | 免费黄色一区 | av在线h| 国产免费观看视频 | 久久久在线 | 在线看岛国av | 国产一级黄大片 | 狠狠综合 | 日日干激情五月 | av午夜电影 | 日韩欧美电影 | 成人在线观看免费视频 | 91欧美日韩国产 | av视屏在线 | 美女视频一区二区 | 涩涩在线 | 午夜视频在线观看一区 | 91精品国产一区 | 欧美精品三级 | 丁香婷婷久久久综合精品国产 | 亚洲一区二区视频在线播放 | 成年人免费在线播放 | 日躁夜躁狠狠躁2001 | 999成人免费视频 | 国产精品99久久久久久宅男 | 91精品国产欧美一区二区成人 | 不卡视频国产 | 黄色软件在线观看 | 久久少妇 | 香蕉视频网址 | 久久久久国产精品免费免费搜索 | 国产成人精品午夜在线播放 | 亚洲在线视频观看 | 在线久久 | 特级西西人体444是什么意思 | 国内一区二区视频 | 中文字幕视频免费观看 | 日韩激情第一页 | 国模吧一区| 久久精品亚洲一区二区三区观看模式 | 一区二区 久久 | 亚洲国产成人精品在线观看 | 人人cao| 国产精品久久久久久久久毛片 | 国产精品视频最多的网站 | 国产免费一区二区三区网站免费 | 丁香激情网 | 超碰久热 | 成人欧美一区二区三区黑人麻豆 | 又色又爽的网站 | 国产精品福利无圣光在线一区 | 9999国产| 超碰在线资源 | 日韩高清一二区 | 狠狠干综合网 | 美女网站久久 | 久久久电影| av成人在线播放 | 91刺激视频 | 丁香六月五月婷婷 | 一区中文字幕电影 | 亚洲最大激情中文字幕 | 免费日韩电影 | 亚洲 在线 | 国产精品丝袜久久久久久久不卡 | 992tv成人免费看片 | 国产视频亚洲精品 | 亚洲理论片 | 在线观看视频国产 | 小草av在线播放 | 99在线免费视频观看 | 精品国产精品久久一区免费式 | 久久精品中文字幕 | 最近中文字幕免费av | 久久综合九色欧美综合狠狠 | 国产在线观看免费 | 99999精品 | 国产成人精品综合久久久久99 | 久久久综合 | 午夜精品福利在线 | 久草精品视频在线播放 | 波多野结衣电影一区 | 久久精品79国产精品 | 日韩簧片在线观看 | 欧美人牲 | 国产精品一区二区精品视频免费看 | 一区二区三区日韩视频在线观看 | 草久久久久久久 | 午夜精品三区 | 久久少妇| 人人爽人人射 | 午夜av在线播放 | av中文电影 | 亚洲 综合 专区 | av中文字幕免费在线观看 | www.五月天色 | 色妞色视频一区二区三区四区 | 人人爽夜夜爽 | 最新国产一区二区三区 | 久久久激情视频 | 国产色视频123区 | 成人免费观看视频大全 | 免费av在线网站 | 天天插天天干 | 免费成人结看片 | 久热国产视频 | 国产精品igao视频网入口 | 在线观看你懂的网站 | 免费成视频 | 香蕉日日 | 黄色一级大片免费看 | 免费色视频网址 | 日韩素人在线观看 | 91成人蝌蚪| 999久久久精品视频 日韩高清www | 中文字幕 影院 | 激情综合色综合久久 | 狠狠的操| 欧美伦理一区二区 | 久久午夜视频 | 777视频在线观看 | 91黄视频在线观看 | 日韩精品在线播放 | 国产福利91精品一区二区三区 | 免费观看一级一片 | 欧美日韩国产免费视频 | 亚洲一区视频免费观看 | 永久黄网站色视频免费观看w | 日韩大片免费观看 | 在线观看国产v片 | 蜜臀av夜夜澡人人爽人人 | 国产成人av福利 | 国产精品精品久久久 | 日韩在线视频国产 | 国产美女免费视频 | 亚洲春色综合另类校园电影 | 美女网站色在线观看 | 安徽妇搡bbbb搡bbbb | 西西人体www444 | 视频一区二区视频 | 亚洲精品免费看 | 日韩av综合网站 | 久久官网 | 美国三级黄色大片 | 亚洲免费国产视频 | 天天草天天操 | 亚洲精品一区二区在线观看 | 成人精品一区二区三区电影免费 | 2023av| 九九在线高清精品视频 | 国产成人精品福利 | 久久综合偷偷噜噜噜色 | 久久久伦理 | av午夜电影 | 久久久久综合 | 在线免费观看亚洲视频 | 9ⅰ精品久久久久久久久中文字幕 | 安徽妇搡bbbb搡bbbb | 91精品一区国产高清在线gif | av字幕在线| 欧美综合色在线图区 | 成人黄色在线电影 | 国产+日韩欧美 | 一色av | 五月婷婷丁香六月 | 99免在线观看免费视频高清 | 天天操天天吃 | 久久久精品 | 色综合综合| 国产一二区视频 | 一区二区三区四区久久 | 免费在线国产黄色 | 国产精品一区二区在线 | 九九亚洲精品 | 99久久99久国产黄毛片 | 人人操日日干 | 亚洲精品国精品久久99热 | 中文亚洲欧美日韩 | 超碰com | 在线电影av | 国产爽视频 | 成人在线观看你懂的 | 亚洲一区二区视频在线 | 国产精品18久久久久久久久久久久 | 色爽网站| 婷婷六月网 | 麻豆免费在线视频 | 中文字幕国语官网在线视频 | 国产福利精品视频 | 日韩欧美一区二区不卡 | 亚洲综合丁香 | 激情网五月婷婷 | 天天鲁一鲁摸一摸爽一爽 | 69国产在线观看 | 成人国产精品一区二区 | 日本精品在线看 | 日本乱视频 | 国产精品一区二区你懂的 | 色噜噜在线观看 | 五月激情丁香婷婷 | 亚洲综合在线五月天 | 狠狠天天 | 黄色国产区 | 亚洲91中文字幕无线码三区 | 手机看片国产日韩 | 在线播放国产一区二区三区 | 国产精品一区二区久久 | 亚洲另类视频在线观看 | 中文字幕乱码电影 | 久久午夜免费视频 | 一级黄色片在线 | 最新国产精品拍自在线播放 | 日韩欧美视频在线播放 | 久久久精品国产一区二区三区 | 国产1级毛片 | 国产精品成人一区二区三区吃奶 | 国产在线欧美在线 | 又爽又黄又刺激的视频 | 久久久国产精品一区二区中文 | 久草在线91| 久久久久成 | 久久手机看片 | 五月综合网站 | 在线观看一区 | 五月婷网| 久久久免费精品 | 日韩久久精品一区二区 | 国产精品一区二区三区免费看 | 国产精品午夜在线 | 国产精品久久久久高潮 | 91麻豆网站 | 色妞久久福利网 | 久草久热 | 天天干婷婷 | 最新国产福利 | 国产精品嫩草影视久久久 | 国产精品理论视频 | 激情综合网色播五月 | 天天操天天舔天天干 | 日日爱网站 | av高清免费在线 | 天天干天天怕 | 日韩免费一区二区 | 成人久久国产 | 91桃花视频 | 婷婷.com| 91精彩视频在线观看 | 蜜臀久久99静品久久久久久 | 久久久999精品视频 国产美女免费观看 | 在线中文字幕观看 | 在线视频你懂得 | 亚洲伦理电影在线 | 国产在线精品福利 | 色天天久久 | 国产亚洲精品电影 | 国产午夜精品久久 | 99热在线观看 | 成人福利在线播放 | 国产麻豆精品传媒av国产下载 | 在线香蕉视频 | 视频福利在线观看 | 麻豆播放| 欧美精品中文 | 成人在线播放视频 | 国产精品免费视频网站 | 在线国产精品一区 | 日日添夜夜添 | 久久99精品国产99久久6尤 | 成人黄色电影免费观看 | 精品国产诱惑 | 天天撸夜夜操 | 国产精品视频全国免费观看 | 国产精品久久久久永久免费 | 天天干天天操人体 | 国产精品剧情 | 精品网站999www | av黄色免费网站 | 成人a视频在线观看 | 国内精品久久久久影院男同志 | 伊人成人激情 | 在线观看91av | 91喷水| 96视频在线 | 免费看三级黄色片 | 91在线观看黄 | 99re8这里有精品热视频免费 | 一区二区亚洲精品 | 色网av| 精品久久精品 | 精品国产1区2区 | 精品国内 | 精品久久久久久久久久 | 国产高清在线视频 | 国产精品丝袜 | 国产一级a毛片视频爆浆 | 亚洲国产精品成人女人久久 | 国产你懂的在线 | 国产在线精品播放 | 日本高清中文字幕有码在线 |