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

歡迎訪問 生活随笔!

生活随笔

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

编程问答

Solr入门和实践以及我对Solr的8点理解

發布時間:2024/4/14 编程问答 60 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Solr入门和实践以及我对Solr的8点理解 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

友情提示
Solr的內容還是比較多的,一篇文章只能講解一部分。
全面介紹,沒興趣,沒時間,也沒能力,回報還不大。
本文只寫點我認為比較重要的知識點,獨特的個人想法。
僅供參考哦,更多細節需要自己去琢磨。


概述
Solr是一個高性能,采用Java5開發,基于Lucene的全文搜索服務器。同時對其進行了擴展,提供了比Lucene更為豐富的查詢語言,
同時實現了可配置、可擴展并對查詢性能進行了優化,并且提供了一個完善的功能管理界面,是一款非常優秀的全文搜索引擎。


工作方式
文檔通過Http利用XML 加到一個搜索集合中。
查詢該集合也是通過http收到一個XML/JSON響應來實現。
它的主要特性包括:高效、靈活的緩存功能,垂直搜索功能,高亮顯示搜索結果,通過索引復制來提高可用性,
提供一套強大Data Schema來定義字段,類型和設置文本分析,提供基于Web的管理界面等。


需求場景
查詢和搜索,我們直接查詢數據庫MySQL。查詢數據庫主要有一些局限性:
比如多表查詢效率低,大文本字段不好建立索引和搜索,復雜的條件查詢和搜索功能不夠強大,或者說不夠簡單。
使用Solr的話,就很簡單地解決了以上問題。

以上需求,或者說關系型數據庫mysql的問題,只是目前的一點理解。
雖說能夠使用MySQL和Sorl解決實際中的問題,但畢竟都是中低難度的問題(自認為如此哦)。
非要說深入理解,剖析Solr的好處,MySQL是否“干的過”Solr,真心不懂。
單獨搞MySQL,夠你研究5年以上,DBA畢竟是個傳說。
Solr,想搞懂,也得好多年。

個人同時學習Java服務端、Android、iOS、Web前端,目標是能夠解決工作中最常見的問題,并不想要
深入學習有限的幾種技術,比如MySQL,達到那種“再難的問題,也可以搞定”的程度。


我對Solr的8點理解
1.定義數據源接口,獲得數據。

比如定義MySQL查詢語句,把一個表或多個表的數據,導入到Solr中。
這個地方我覺得特別“不公平”,數據都是從別的地方搞過來的。外界的數據如果會變化,意味著,必須處理“數據同步”。
實時性要求不高的情況下,可以每天“全量更新”。要求高的情況下,單條數據的變化,需要“實時更新-單條”。
因此,Solr和Mysql并不是“直接競爭”關系,而是“互補”的關系。
2.把Mysql等數據源的數據,導入到Solr中去。
Solr定義數據,可以理解成一張很大的表,包含了很多字段,比如可以包含mysql中3個表的所有字段。
這樣,查詢就不存在“多表”的問題。
既然是一張表,建立索引,查詢就很快了。
3.自帶緩存功能。
Mysql,Solr,Redis等數據源或者有能力獲得數據和管理數據的組件,只要需要,就可以提供“緩存”功能。
Solr簡化了查詢,緩存就更容易了。
4.索引和全文搜索。
Solr底層采用Lucene建立索引,全文索引,這樣可以實現更多的“搜索功能”,可以說增強了Mysql的查詢。
5.站內搜索的另外一種形式。
百度等搜索引擎,可以為網站提供“站內搜索”功能,他們爬去數據可以是公開的URL的形式。
如果需要和百度等合作,可以申請使用百度的搜索API,將站內數據,更友好,更快速地告訴百度。
而Solr和百度提供的搜索相關接口就基本一樣,只不過是處在我們的管理之下。
6.簡潔使用的管理界面。
后臺有Web界面,導入數據,更新,可以通過可視化的操作來管理,比較方便。
7.功能服務化。
Solr提供的查詢等功能,有Java等多種語言的實現。
建立數據結構,導入數據,維護緩存和實時性,最重要的就是“查詢”和“搜索”了。
8.最大的“隱患”。
只用Mysql管理數據和查詢的時候,我們必須并且只需要保障mysql的“高可用性”。
不能出任何問題,如果只用1個Mysql,意味著我們需要實時監控Mysql是否可用,如果出了問題,我們需要立即修復它。
如果是多臺Mysql,我們需要用主從,或者更復雜的主從。

現在用了Solr,意味著,我們很多查詢和搜索,優先使用Solr,不再使用Mysql。
這個時候,為了“高可靠性”,我們也必須保障Solr是靠譜的。
單臺Solr服務器,可靠性怎么樣,我不太清楚。
無論單臺Solr是否靠譜,多臺Solr更加靠譜,這都意味著
“我們程序中必須可靠的基礎服務更多了”。

常見的必須“高可用性”的服務有
a.Mysql
b.Redis
3.Nginx
4.Solr
高可用性的服務越多,意味著我們的程序越復雜。
大部分的公司,都是中小型企業。
大部分的應用,都是為了快速推出,看看是否有效果。
真正需要保障“高可靠性”的項目,是很少的,如果遇到了,是很幸運的。

官方網站:http://lucene.apache.org/solr/
本地環境:Windows-5.3.1版本

運行和建立工程
啟動:solr.cmd start(類似這樣)
建立工程:
name=raikou
config=solrconfig.xml
schema=schema.xml
dataDir=J:\SoftData\Solr\raikou\data
指定config、schema等多種參數。
(圖文并茂的入門指引,可以參考其它博主的文章,本人覺得這種“圖文并茂”的太尼瑪費事了。
方便了讀者,但是“技術含量”不夠高,博主表示不過癮o(︶︿︶)o )


簡要介紹下幾個配置,附帶源文件內容


core.properties

?
1 2 3 4 name=raikou(項目名稱) config=solrconfig.xml(Solr配置) schema=schema.xml(模式定義) dataDir=J:\SoftData\Solr\raikou\data (存儲索引等數據)





Web界面輸入的內容,保存在這了,入口配置,可以這么說。


schema.xml

?
1 2 3 4 <field indexed="true" multivalued="false" name="id" required="true" stored="true" type="long"> <field indexed="true" name="title" required="true" stored="true" type="string"> <field indexed="true" name="content" stored="true" type="string"> <field indexed="true" name="summary" stored="true" type="string"> </field></field></field></field>



定義了幾個字段


id
title
唯一字段,默認查詢字段

schemal.xml還配置了若干其它配置文件,比如“stopwords_en.txt”、“protwords.txt”、“stopwords.txt”等。
如果Solr啟動報錯,可能是缺少了這些字段。

data-config.xml

?
1 2 3 4 5 6 7 8 9 <!--?xml version=1.0 encoding=UTF-8?-->? <dataconfig>? <datasource driver="com.mysql.jdbc.Driver" password="mypassword/" type="JdbcDataSource" url="jdbc:mysql://localhost:3306/raikou?useUnicode=true&characterEncoding=UTF-8" user="root">? ??? <document name="raikou_article">?????????? ????<entity deltaimportquery="select" deltaquery="select" from="" id="${dih.delta.id}" name="raikou_article" query="select" raikou_article="" update_time="" where=""> '${dataimporter.last_index_time}'>??????????????????? ????????????????<field column="id" name="id">? ????????????????<field column="title" name="title"> </field></field></entity></document></datasource></dataconfig>


定義了數據導入、增量更新的查詢語句。

web.xml 這段配置,可能有用
E:Mongodb-Redis-Nginxsolr-5.3.1serversolr-webappwebappWEB-INFweb.xml

?
1 2 3 4 5 6 7 8 9 <!-- People who want to hardcode their Solr Home directly into the ??????WAR File can set the JNDI property here... ??--> ?? ???<env-entry> ??????<env-entry-name>solr/home</env-entry-name> ??????<env-entry-value>J:SoftDataSolr</env-entry-value> ??????<env-entry-type>java.lang.String</env-entry-type> ???</env-entry>




Java程序訪問
maven配置

?
1 2 3 4 5 <dependency> ????????<groupid>org.apache.solr</groupid> ????????solr-solrj</artifactid> ????????<version>5.3.1</version> ????</dependency>





包名:org.apache.solr.client.solrj


工具類
SolrHelper.java 查詢(查詢語句構造和執行查詢,分頁查詢),更新,重建索引

?
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 269 270 271 272 273 274 275 276 277 278 279 280 281 282 283 284 285 286 287 288 289 290 291 292 293 294 295 296 297 298 299 300 301 302 303 304 305 306 307 308 309 310 311 312 313 314 315 316 317 318 319 320 321 322 323 324 325 326 327 328 329 330 331 332 333 334 335 336 337 338 339 340 341 342 343 344 345 346 347 348 349 350 351 352 353 354 355 356 357 358 359 360 361 362 363 364 365 366 367 368 369 370 371 372 373 374 375 376 377 378 379 380 381 382 383 384 385 386 387 388 389 390 391 392 393 394 395 396 397 398 399 400 401 402 403 404 405 406 407 408 409 410 411 412 413 414 415 416 417 418 419 420 421 422 423 424 425 426 427 428 429 430 431 432 433 434 435 436 437 438 439 440 441 442 443 444 445 446 447 448 449 450 451 452 453 454 455 456 457 458 459 460 461 462 463 464 465 466 467 468 469 470 471 472 473 import java.beans.PropertyDescriptor; import java.io.IOException; import java.lang.reflect.Field; import java.lang.reflect.Method; import java.text.SimpleDateFormat; import java.util.Arrays; import java.util.Date; import java.util.List; import org.apache.commons.lang3.StringUtils; import org.apache.solr.client.solrj.SolrQuery; import org.apache.solr.client.solrj.SolrServerException; import org.apache.solr.client.solrj.impl.HttpSolrClient; import org.apache.solr.client.solrj.response.QueryResponse; import org.apache.solr.common.SolrInputDocument; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import com.github.pagehelper.Page; /**查詢(查詢語句構造),更新,重建索引*/ public class SolrHelper<t> { ????protected final Logger logger = LoggerFactory.getLogger(SolrHelper.class); ????private HttpSolrClient server; ????private StringBuffer queryString; ????public SolrHelper(String reqUrl) { ????????server = new HttpSolrClient(reqUrl); ????????queryString = new StringBuffer(); ????} ????public void andEquals(String fieldName, String val) { ????????queryString.append( && ).append(fieldName).append(:).append(val); ????} ????public void orEquals(String fieldName, String val) { ????????queryString.append( || ).append(fieldName).append(:).append(val); ????} ????public void andNotEquals(String fieldName, String val) { ????????queryString.append( && ).append(-).append(fieldName).append(:) ????????????????.append(val); ????} ????public void orNotEquals(String fieldName, String val) { ????????queryString.append( || ).append(-).append(fieldName).append(:) ????????????????.append(val); ????} ????public void andGreaterThan(String fieldName, String val) { ????????queryString.append( && ).append(fieldName).append(:[).append(val) ????????????????.append( TO ).append(*]); ????} ????public void orGreaterThan(String fieldName, String val) { ????????queryString.append( || ).append(fieldName).append(:[).append(val) ????????????????.append( TO ).append(*]); ????} ????public void andGreaterThanOrEqualTo(String fieldName, String val) { ????????queryString.append( && ).append(fieldName).append(:[).append(val) ????????????????.append( TO ).append(*]); ????} ????public void orGreaterThanOrEqualTo(String fieldName, String val) { ????????queryString.append( || ).append(fieldName).append(:[).append(val) ????????????????.append( TO ).append(*]); ????} ????public void andDateGreaterThan(String fieldName, Date val) { ????????queryString.append( && ).append(fieldName).append(:[) ????????????????.append(formatUTCString(val)).append( TO ).append(*]); ????} ????public void orDateGreaterThan(String fieldName, Date val) { ????????queryString.append( || ).append(fieldName).append(:[) ????????????????.append(formatUTCString(val)).append( TO ).append(*]); ????} ????public void andDateGreaterThanOrEqualTo(String fieldName, Date val) { ????????queryString.append( && ).append(fieldName).append(:[) ????????????????.append(formatUTCString(val)).append( TO ).append(*]); ????} ????public void orDateGreaterThanOrEqualTo(String fieldName, Date val) { ????????queryString.append( || ).append(fieldName).append(:[) ????????????????.append(formatUTCString(val)).append( TO ).append(*]); ????} ????public void andLessThan(String fieldName, String val) { ????????queryString.append( && ).append(fieldName).append(:[).append(*) ????????????????.append( TO ).append(val).append(]); ????} ????public void orLessThan(String fieldName, String val) { ????????queryString.append( && ).append(fieldName).append(:[).append(*) ????????????????.append( TO ).append(val).append(]); ????} ????public void andLessThanOrEqualTo(String fieldName, String val) { ????????queryString.append( && ).append(fieldName).append(:[).append(*) ????????????????.append( TO ).append(val).append(]); ????} ????public void orLessThanOrEqualTo(String fieldName, String val) { ????????queryString.append( && ).append(fieldName).append(:[).append(*) ????????????????.append( TO ).append(val).append(]); ????} ????public void andDateLessThan(String fieldName, Date val) { ????????queryString.append( && ).append(fieldName).append(:[).append(*) ????????????????.append( TO ).append(formatUTCString(val)).append(]); ????} ????public void orDateLessThan(String fieldName, Date val) { ????????queryString.append( && ).append(fieldName).append(:[).append(*) ????????????????.append( TO ).append(formatUTCString(val)).append(]); ????} ????public void andDateLessThanOrEqualTo(String fieldName, Date val) { ????????queryString.append( && ).append(fieldName).append(:[).append(*) ????????????????.append( TO ).append(formatUTCString(val)).append(]); ????} ????public void orDateLessThanOrEqualTo(String fieldName, Date val) { ????????queryString.append( && ).append(fieldName).append(:[).append(*) ????????????????.append( TO ).append(formatUTCString(val)).append(]); ????} ????public void andLike(String fieldName, String val) { ????????queryString.append( && ).append(fieldName).append(:*).append(val) ????????????????.append(*); ????} ????public void orLike(String fieldName, String val) { ????????queryString.append( || ).append(fieldName).append(:*).append(val) ????????????????.append(*); ????} ????public void andNotLike(String fieldName, String val) { ????????queryString.append( && ).append(-).append(fieldName).append(:*) ????????????????.append(val).append(*); ????} ????public void orNotLike(String fieldName, String val) { ????????queryString.append( || ).append(-).append(fieldName).append(:*) ????????????????.append(val).append(*); ????} ????public void andIn(String fieldName, String[] vals) { ????????queryString.append( && ); ????????in(fieldName, vals); ????} ????private void in(String fieldName, String[] vals) { ????????List<string> list=Arrays.asList(vals); ????????in(queryString,fieldName,list); ????} ????? ????public void orIn(String fieldName, List<string> vals) { ????????queryString.append( || ); ????????in(queryString,fieldName,vals); ????} ????private static void in(StringBuffer queryString,String fieldName, List<string> vals) { ????????queryString.append((); ????????inStr(queryString, fieldName, vals); ????????queryString.append()); ????} ????private static void inStr(StringBuffer queryString, String fieldName, ????????????List<string> vals) { ????????int index = 0; ????????for (String val : vals) { ????????????if (0 != index) { ????????????????queryString.append( || ); ????????????} ????????????queryString.append(fieldName).append(:).append(val); ????????????index++; ????????} ????} ????? ????// http://stackoverflow.com/questions/634765/using-or-and-not-in-solr-query ????//instead of NOT [condition] use (*:* NOT [condition]) ????public void andNotIn(String fieldName, String[] vals) { ????????List<string> list=Arrays.asList(vals); ????????queryString.append(&&(); ????????queryString.append(*:* NOT ); ????????inStr(queryString, fieldName, list); ????????queryString.append()); ????} ????public void andDateBetween(String fieldName, Date startDate, Date endDate) { ????????queryString.append( && ).append(fieldName).append(:[) ????????????????.append(formatUTCString(startDate)).append( TO ) ????????????????.append(formatUTCString(endDate)).append(]); ????} ????public void orDateBetween(String fieldName, Date startDate, Date endDate) { ????????queryString.append( || ).append(fieldName).append(:[) ????????????????.append(formatUTCString(startDate)).append( TO ) ????????????????.append(formatUTCString(endDate)).append(]); ????} ????public void andDateNotBetween(String fieldName, Date startDate, Date endDate) { ????????queryString.append( && ).append(-).append(fieldName).append(:[) ????????????????.append(formatUTCString(startDate)).append( TO ) ????????????????.append(formatUTCString(endDate)).append(]); ????} ????public void orDateNotBetween(String fieldName, Date startDate, Date endDate) { ????????queryString.append( && ).append(-).append(fieldName).append(:[) ????????????????.append(formatUTCString(startDate)).append( TO ) ????????????????.append(formatUTCString(endDate)).append(]); ????} ????public void andBetween(String fieldName, String start, String end) { ????????queryString.append( && ).append(fieldName).append(:[).append(start) ????????????????.append( TO ).append(end).append(]); ????} ????public void orBetween(String fieldName, String start, String end) { ????????queryString.append( || ).append(fieldName).append(:[).append(start) ????????????????.append( TO ).append(end).append(]); ????} ????public void andNotBetween(String fieldName, String start, String end) { ????????queryString.append( && ).append(-).append(fieldName).append(:[) ????????????????.append(start).append( TO ).append(end).append(]); ????} ????public void orNotBetween(String fieldName, String start, String end) { ????????queryString.append( || ).append(-).append(fieldName).append(:[) ????????????????.append(start).append( TO ).append(end).append(]); ????} ????public void andStartSub() { ????????queryString.append( && (); ????} ????public void orStartSub() { ????????queryString.append( || (); ????} ????public void endSub() { ????????queryString.append()); ????} ????private String formatUTCString(Date d) { ????????SimpleDateFormat sdf = new SimpleDateFormat(yyyy-MM-dd'T'HH:mm:ss'Z'); ????????String s = sdf.format(d); ????????return s; ????} ????public int execQueryTotalCount() { ????????SolrQuery params = handleQuery(); ????????params.set(start, 0); ????????params.set(rows, Integer.MAX_VALUE); ????????QueryResponse response = null; ????????try { ????????????response = server.query(params); ????????????return response.getResults().size(); ????????} catch (SolrServerException e) { ????????????logger.error(, e); ????????} catch (IOException e) { ????????????logger.error(, e); ????????} ????????return 0; ????} ????public List<t> query(String sort, Class<t> beanClass) { ????????SolrQuery params = handleQuery(); ????????QueryResponse response = null; ????????List<t> list = null; ????????try { ????????????logger.info(SolyQuery: + params.toString()); ????????????response = server.query(params); ????????????list = (List<t>) response.getBeans(beanClass); ????????} catch (SolrServerException e) { ????????????logger.error(SolrServerException, e); ????????} catch (IOException e) { ????????????logger.error(IOException, e); ????????} ????????return list; ????} ????public Page<t> execQuery(Integer pageNo, Integer rows, String sort, ????????????Class<t> beanClass) { ????????List<t> results = null; ????????Page<t> page = null; ????????SolrQuery params = handleQuery(); ????????if (pageNo != null && rows != null && pageNo > 0 && rows > 0) { ????????????params.set(start, (pageNo - 1) * rows); ????????????params.set(rows, rows); ????????} ????????if (null != sort && !.equals(sort)) { ????????????params.set(sort, sort); ????????} ????????QueryResponse response = null; ????????try { ????????????logger.info(SolyQuery WithPage: + params.toString()); ????????????response = server.query(params); ????????????results = (List<t>) response.getBeans(beanClass); ????????????page = new Page<t>(pageNo, rows, execQueryTotalCount()); ????????????page.addAll(results); ????????} catch (SolrServerException e) { ????????????logger.error(SolrServerException, e); ????????} catch (IOException e) { ????????????logger.error(IOException, e); ????????} ????????return page; ????} ????private SolrQuery handleQuery() { ????????SolrQuery params = new SolrQuery(); ????????String qryFinalStr = queryString.toString(); ????????if (qryFinalStr.startsWith( && )) { ????????????qryFinalStr = qryFinalStr.replaceFirst( && , ); ????????} else if (qryFinalStr.startsWith( || )) { ????????????qryFinalStr = qryFinalStr.replaceFirst( || , ); ????????} ????????// 子查詢開頭的關聯符號 ????????if (-1 != qryFinalStr.indexOf(( && )) { ????????????qryFinalStr = qryFinalStr.replaceAll(\( \&\& , (); ????????} ????????if (-1 != qryFinalStr.indexOf(( || )) { ????????????qryFinalStr = qryFinalStr.replaceAll(\( \|\| , (); ????????} ????????if (StringUtils.isBlank(qryFinalStr)) { ????????????qryFinalStr = *:*; ????????} ????????params.set(q, qryFinalStr); ????????return params; ????} ????public void execDelete(String keyName, String keyVal) { ????????try { ????????????server.deleteByQuery(keyName + : + keyVal); ????????????server.commit(); ????????} catch (SolrServerException | IOException e) { ????????????logger.error(, e); ????????} ????} ????public void execUpdate(T model) { ????????Field[] fields = model.getClass().getDeclaredFields(); ????????SolrInputDocument solrDoc = new SolrInputDocument(); ????????try { ????????????for (Field f : fields) { ????????????????PropertyDescriptor pd; ????????????????pd = new PropertyDescriptor(f.getName(), model.getClass()); ????????????????// 屬性名 ????????????????String fieldName = f.getName(); ????????????????Method rM = pd.getReadMethod();// 獲得讀方法 ????????????????solrDoc.addField(fieldName, rM.invoke(model)); ????????????} ????????????server.add(solrDoc); ????????????server.commit(); ????????} catch (Exception e) { ????????????logger.error(, e); ????????} ????} ????public void execUpdate(SolrInputDocument solrDoc) { ????????try { ????????????server.add(solrDoc); ????????????server.commit(); ????????} catch (SolrServerException e) { ????????????logger.error(, e); ????????} catch (IOException e) { ????????????logger.error(, e); ????????} ????} ????/** ?????* 重建索引和增量索引的接口 ?????* ?????* @param delta ?????*/ ????public void buildIndex(boolean delta) { ????????SolrQuery query = new SolrQuery(); ????????// 指定RequestHandler,默認使用/select ????????query.setRequestHandler(/dataimport); ????????String command = delta ? delta-import : full-import; ????????String clean = delta ? false : true; ????????String optimize = delta ? false : true; ????????query.setParam(command, command).setParam(clean, clean) ????????????????.setParam(commit, true).setParam(optimize, optimize); ????????try { ????????????server.query(query); ????????} catch (SolrServerException e) { ????????????logger.error(建立索引時遇到錯誤,delta: + delta, e); ????????} catch (IOException e) { ????????????logger.error(建立索引時遇到錯誤,delta: + delta, e); ????????} ????} }</t></t></t></t></t></t></t></t></t></t></string></string></string></string></string></t>





代碼使用示例:
1.常見的分頁查詢,更新單條數據

?
1 2 3 4 5 6 7 8 9 10 public static void main(String[] args) { ????????SolrHelper<project> sh = new SolrHelper<project>( ????????????????http://host/solr/project); ????????sh.andEquals(id, 32404); ????????List<project> page = sh.execQuery(1, 10, id desc, ????????????????Project.class); ????????Project ps = page.get(0); ????????ps.setTotal(3.1415); ????????sh.execUpdate(ps); ????}</project></project></project>




2.不修改,直接同步

?
1 2 3 4 5 6 public void synProject(long id) { ????????ProjectSolrDto solrDto = projectMapper.selectSolrProjectSimple(id); ????????SolrHelper<projectsolrdto> solrHelper = new SolrHelper<projectsolrdto>( ????????????????solrProjectUrl); ????????solrHelper.execUpdate(solrDto); ????}</projectsolrdto></projectsolrdto>




3.同步某幾個字段

?
1 2 3 4 5 6 7 8 9 10 11 public void synIntention(Long id) { ????????Intention intention = intentionMapper.selectByPrimaryKey(id); ????????SolrHelper<intention> solrHelper = new SolrHelper<intention>( ????????????????solrIntentionUrl); ????????SolrInputDocument solrDoc = new SolrInputDocument(); ????????solrDoc.addField(id, intention.getId()); ????????solrDoc.addField(intro, intention.getIntro()); ????????solrDoc.addField(industry, intention.getIndustry()); ????????solrHelper.execUpdate(solrDoc); ????} ????</intention></intention>



4.刪除

?
1 2 3 4 5 public void delFund(Long id) { ????????SolrHelper<intention> solrHelper = new SolrHelper<intention>( ????????????????solrFundUrl); ????????solrHelper.execDelete(id, id.toString()); ????}</intention></intention>





幾點補充
1.需要有“定時器”,定時“全量更新”和“重建索引”,防止數據不一致,或者查詢效率低。
2.SolrHelper中的代碼,或者說Solr的相關代碼,無非就是“增刪改查CRUD”,比較特殊的
“重建索引”和為了執行查詢,拼接查詢條件的“And,Or”等工具方法。
3.分頁有個實體類,用到了Github上的1個工具,個人覺得一般般,Page類的定義比較糟糕。
如有需要,自己引入,或者自行改造。


寫在最后
IT互聯網技術很多,更新很快,問題也很多,深入需要實踐,深入需要時間。
技術方面的博學和專注,自己去平衡吧~
技術和技術之外的平衡,自己看著辦哦~

轉載于:https://www.cnblogs.com/duanxz/p/5208365.html

總結

以上是生活随笔為你收集整理的Solr入门和实践以及我对Solr的8点理解的全部內容,希望文章能夠幫你解決所遇到的問題。

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

亚洲精品乱码久久久久久写真 | 中文字幕成人av | 91亚洲国产 | 天天操天天射天天操 | 精品国产资源 | 亚洲专区在线 | 久久午夜国产精品 | 黄色大全在线观看 | 日本在线观看一区二区三区 | 超碰在线91 | 婷婷去俺也去六月色 | 久久er99热精品一区二区三区 | 亚洲精品久久久蜜桃直播 | 视频一区二区视频 | 99国产精品一区二区 | 麻豆小视频在线观看 | 日韩精品偷拍 | 探花视频网站 | 亚洲 欧美 综合 在线 精品 | 久久草在线视频国产 | 亚洲婷婷伊人 | 欧美日韩中文在线视频 | 午夜婷婷综合 | 91久久久久久久一区二区 | 91秒拍国产福利一区 | 久久婷婷色综合 | 国产精品中文字幕在线观看 | 五月天亚洲婷婷 | 色综合久久88色综合天天免费 | 国产黄色精品在线观看 | 人人操日日干 | 在线观看视频你懂 | 免费观看视频的网站 | 日日综合网 | 日日夜夜天天干 | 久色免费视频 | 波多野结衣在线观看视频 | 99久久精品免费视频 | a天堂最新版中文在线地址 久久99久久精品国产 | 91福利小视频 | www.久久久com | 日日碰狠狠躁久久躁综合网 | 九色在线视频 | 在线国产不卡 | 国产精品a级 | 国产视频精品在线 | 毛片激情永久免费 | 国产成人久久 | 欧美日本日韩aⅴ在线视频 插插插色综合 | 成人黄色大片在线观看 | 亚洲国产精品成人综合 | 国产.精品.日韩.另类.中文.在线.播放 | 国产精品毛片一区二区在线看 | 黄色国产大片 | 精品一二三区视频 | 狠狠色伊人亚洲综合网站野外 | 国产系列 在线观看 | 免费看片成人 | 亚洲视频久久久 | 亚洲欧美日韩国产精品一区午夜 | 久久免费精品国产 | 高潮久久久久久久久 | 国产精品mv在线观看 | 国产精品a久久 | 国产精品一区在线观看你懂的 | 99久久精品无免国产免费 | 99爱国产精品 | 免费av试看| 久草久草视频 | 99久久精品日本一区二区免费 | 日韩高清精品一区二区 | 日本久久精 | 精品国产亚洲一区二区麻豆 | 在线亚洲精品 | 亚洲欧美999| 国产福利一区二区三区视频 | 亚洲天堂在线观看完整版 | 国产99免费| 国产97视频 | 在线视频 影院 | 久久久精品久久日韩一区综合 | 亚洲国产综合在线 | 91成人精品视频 | 香蕉影院在线观看 | 西西人体4444www高清视频 | 在线a视频免费观看 | 日韩在线短视频 | 麻豆传媒在线视频 | 亚洲精品高清在线 | 波多野结衣视频一区二区 | 三级黄色在线 | 久久婷婷国产色一区二区三区 | 日本精品视频一区 | 在线欧美日韩 | 福利视频午夜 | 四虎成人精品在永久免费 | 99免费在线播放99久久免费 | 亚洲在线成人精品 | 久久成人国产精品一区二区 | 欧美日韩久久不卡 | 久久久免费精品国产一区二区 | 日日碰狠狠添天天爽超碰97久久 | 狠狠狠色丁香婷婷综合久久五月 | 99精品国产成人一区二区 | 午夜精品一区二区三区四区 | 黄色av一区二区 | 成人h动漫在线看 | 娇妻呻吟一区二区三区 | 最近最新最好看中文视频 | 免费观看www7722午夜电影 | 久草9视频 | 美女免费黄视频网站 | 免费a级大片 | 精品久久久久久国产偷窥 | 免费av试看| 国产精品久久久久一区二区 | 狠狠操精品 | 伊人久久国产 | 亚洲午夜在线视频 | 有没有在线观看av | 久久午夜电影院 | 91视频亚洲 | 插综合网 | 欧美激情精品久久久久久免费印度 | 国产视频在线播放 | 成人国产精品一区 | 性色av免费看 | 色偷偷97 | 欧美日韩国产精品一区二区三区 | 亚洲精品国产欧美在线观看 | 四虎成人精品永久免费av九九 | h视频在线看 | 国产日产在线观看 | 久久再线视频 | 久久激情小说 | 99精品视频免费观看 | 色婷婷免费视频 | 99久久99久久精品国产片 | 2018好看的中文在线观看 | 97视频免费观看 | 国产精品一区二区久久精品爱涩 | 激情久久久久 | 成人a在线 | 超碰av在线 | 国产成人一区在线 | 国内综合精品午夜久久资源 | 成人免费在线播放 | 91资源在线 | 91久久电影 | 国产精品精品久久久 | 在线观看国产一区二区 | 久久草草影视免费网 | 天天天天天天干 | 欧美日韩一区久久 | 亚洲欧美日韩一二三区 | 日韩三级一区 | 久草在线综合 | 色综合久久88色综合天天人守婷 | 久草国产精品 | 国产精品久久久久久久婷婷 | 婷婷亚洲激情 | 欧美日韩国产一区二区三区在线观看 | 亚洲国产精品va在线看黑人动漫 | 成人国产精品一区 | 最近中文字幕免费av | 亚洲人毛片 | 国产一区二区在线免费观看 | 成人黄色大片在线免费观看 | 色就色,综合激情 | 国产日本在线观看 | 狠狠色丁香久久婷婷综合_中 | 国产中文字幕国产 | 91av免费在线观看 | 久草精品视频在线看网站免费 | 欧美极品一区二区三区 | 视频一区二区三区视频 | 色香网 | 一级特黄aaa大片在线观看 | 国产黄a三级三级 | 婷婷丁香狠狠爱 | 久久久精品午夜 | av高清一区二区三区 | 日韩av在线高清 | 欧美美女激情18p | 超碰日韩在线 | 亚洲更新最快 | 五月婷婷精品 | 午夜影院在线观看18 | 99视频精品视频高清免费 | 午夜18视频在线观看 | 国产色区 | 婷婷久久亚洲 | 色婷婷99 | 日韩激情视频在线观看 | 99精品国自产在线 | 国产成人99av超碰超爽 | 又黄又刺激的视频 | 午夜手机电影 | 亚洲人精品午夜 | 99久久精| 波多野结衣日韩 | 国产999精品久久久影片官网 | 久久精品日产第一区二区三区乱码 | 中文字幕一区二区三区四区视频 | 亚洲精品国精品久久99热 | 久久影院午夜论 | 国产日女人 | 亚洲视频综合 | 色婷婷啪啪免费在线电影观看 | 波多野结衣视频一区 | 激情综合国产 | 天天做夜夜做 | 久久毛片高清国产 | 综合五月婷婷 | 精品国产诱惑 | 国产精品9999久久久久仙踪林 | 国产精品免费久久久久影院仙踪林 | 国产一区二区久久精品 | 天天天天色射综合 | 日韩手机在线观看 | 亚洲蜜桃在线 | 国产精品情侣视频 | 99久久99热这里只有精品 | 麻豆94tv免费版 | 91久久国产精品 | 久久综合九色综合久久久精品综合 | 久久久久久久久毛片精品 | 日韩在线观看中文 | 不卡电影一区二区三区 | 高清久久久久久 | 国产精品久久久久久久免费观看 | 精品国产一区二区三区久久久蜜臀 | 国产精品久久久久久影院 | 亚洲伦理精品 | 黄色av免费在线 | 91在线色| 一二区av| 国产1区2区3区精品美女 | 2018好看的中文在线观看 | 99久久超碰中文字幕伊人 | 亚洲永久精品在线观看 | 中文字幕高清在线播放 | 免费黄a | 最近免费中文字幕大全高清10 | 伊甸园永久入口www 99热 精品在线 | 久久精品网址 | 麻豆视频成人 | 成年人电影毛片 | 亚洲精品男人天堂 | 色综合天天综合 | 99精品视频免费全部在线 | 有码中文字幕 | 欧美日韩中文国产 | 免费a视频在线观看 | 久久中文字幕视频 | 一区国产精品 | 九九热精品在线 | 久久综合精品国产一区二区三区 | 久久久久麻豆 | 激情中文字幕 | 免费观看全黄做爰大片国产 | 人人澡人人添人人爽一区二区 | 国产第一页福利影院 | 在线观看成年人 | 欧美久久久久久久久中文字幕 | 日韩精品黄 | 九九热国产 | 国产精品久久久久久吹潮天美传媒 | av高清免费在线 | 日韩激情久久 | 国产亚洲成人网 | 婷婷婷国产在线视频 | 日批视频在线播放 | 久久久久免费精品视频 | 免费看的视频 | 91精品视频观看 | 日韩av一卡二卡三卡 | 国产精品黄网站在线观看 | 欧美日韩二三区 | 午夜私人影院久久久久 | 在线天堂亚洲 | 国产精品自产拍在线观看桃花 | 99免费观看视频 | 亚洲精品三级 | www.黄色 | 久久久久久久久毛片精品 | 国产传媒中文字幕 | 亚洲黄色av网址 | 久久久免费 | 久久97久久 | 在线蜜桃视频 | 国产精品欧美精品 | 天天操天天干天天操天天干 | 国产精品99久久久精品免费观看 | 亚洲精品高清视频 | 免费美女av| 日本中文字幕在线视频 | 在线观看岛国 | 波多野结衣在线视频免费观看 | 国产中文伊人 | 黄色大片入口 | 在线国产中文字幕 | 涩涩伊人| 欧美精品在线观看免费 | 黄色电影小说 | avhd高清在线谜片 | 激情网五月天 | 99热手机在线 | 国产亚洲精品成人av久久影院 | 免费观看一区二区 | 天天操比| 一级特黄av | 国产一二三区av | 91精品视频在线观看免费 | 九九日韩 | 日韩av在线资源 | 特级a老妇做爰全过程 | 久久九九国产视频 | 欧美日韩aaaa | 日本精品久久久久影院 | 四虎国产精 | 日日夜夜狠狠干 | 五月天综合激情网 | 国产又粗又长又硬免费视频 | 久草在线视频免费资源观看 | 国产精品久久久久久久午夜片 | 久久久天堂 | 18国产精品白浆在线观看免费 | 久草在线免费看视频 | 久热免费在线观看 | 日韩动漫免费观看高清完整版在线观看 | 91免费网址 | 亚洲 av网站 | 国产精品久久99综合免费观看尤物 | 免费91在线观看 | 一区二区 不卡 | 中文字幕乱偷在线 | 亚洲激情综合 | 91色在线观看 | 91正在播放 | 夜夜爽88888免费视频4848 | 日韩国产精品一区 | 国产一级免费视频 | 一区二区三区国 | 一级黄色免费网站 | 免费看三级 | 91九色成人| 性色av一区二区三区在线观看 | 最近的中文字幕大全免费版 | 天天操夜夜操国产精品 | 久久精品久久久久电影 | 免费aa大片 | 亚洲 欧美 另类人妖 | 亚洲精品乱码白浆高清久久久久久 | 中文字幕制服丝袜av久久 | 国产永久免费高清在线观看视频 | 天天天色综合a | 国产精品国内免费一区二区三区 | 亚洲高清视频在线观看 | 国产一及片 | 国产在线观看污片 | 国产一线在线 | 色大片免费看 | 国产精品久久艹 | 欧美一级性生活片 | 99精品在线播放 | 免费观看www视频 | 波多野结衣在线视频免费观看 | 久草在线视频首页 | 91大神视频网站 | 欧美成人手机版 | av电影免费在线 | 国产69精品久久99不卡的观看体验 | 欧美日韩高清在线观看 | 久久久久久久久爱 | 亚洲精品在线免费看 | 91视频在线免费看 | 国产免费午夜 | 字幕网在线观看 | 久久99精品久久只有精品 | 国产精品视频免费在线观看 | 中文字幕久久久精品 | 草久草久 | 国产中文字幕视频在线 | 国产高清一级 | 亚洲欧美日韩在线一区二区 | 一区二区伦理电影 | 免费在线观看的av网站 | 成人91在线| 欧美色婷婷 | 五月天婷婷狠狠 | 成人av免费在线 | 亚洲另类xxxx | 四虎在线视频 | 99热这里只有精品8 久久综合毛片 | 2019中文在线观看 | 国产又黄又硬又爽 | 超碰97国产| 久久国产午夜精品理论片最新版本 | 9999在线 | 国内精品久久久久影院日本资源 | 99热精品免费观看 | 欧美乱码精品一区二区 | 欧美性成人 | 国产69精品久久99的直播节目 | 激情文学丁香 | 亚州精品国产 | 男女男视频| 99国产视频在线 | 日韩久久久久久久 | 国产精品99久久久精品免费观看 | 午夜精品久久久久久久99水蜜桃 | 91看片淫黄大片一级在线观看 | 波多野结衣在线视频一区 | 在线观看黄网 | 天天爱天天操天天爽 | 四虎影视欧美 | 在线观看国产高清视频 | 热热热热热色 | 黄色精品网站 | 2019中文在线观看 | 国产精品初高中精品久久 | 欧美 日韩 国产 中文字幕 | 国产免费又黄又爽 | 人人爽爽人人 | 三级黄色大片在线观看 | 日韩av看片 | 99久久99久久精品国产片 | 国产精品一区二区中文字幕 | 日韩久久一区二区 | 最新av电影网站 | 国产成人一区二区啪在线观看 | 夜色.com| 少妇搡bbbb搡bbb搡忠贞 | 91尤物在线播放 | 国产探花在线看 | 久久永久视频 | 国产精品亚洲综合久久 | 日韩免费看 | 免费的成人av | 国产精品毛片久久久久久久 | 久久99精品国产99久久6尤 | 国产视频一区精品 | 国产成人精品在线 | 亚洲午夜精品久久久 | 国产精品久久久久影院 | 国产精品久久久久永久免费观看 | 日韩免费中文 | 天天干,天天射,天天操,天天摸 | 久热电影 | 国产精品一区二区在线 | 激情久久久久 | 91热这里只有精品 | 最新久久免费视频 | 中文字幕免费在线 | 国产中文字幕亚洲 | 亚洲综合在线五月天 | 免费观看91视频大全 | 精品视频久久 | 免费视频久久久久久久 | 中文字幕免费高清在线 | 色网av| 久久久久久久久久免费视频 | 久久精品中文 | h动漫中文字幕 | 免费在线国产精品 | 国产一区二区三精品久久久无广告 | a v在线视频| 少妇18xxxx性xxxx片 | 2019精品手机国产品在线 | 天天爽天天搞 | 中文在线中文资源 | 麻豆视频国产在线观看 | 欧美精品久久久久a | 91成人看片 | 国产精品视频99 | 久草在线欧美 | 久久免费99精品久久久久久 | av在线网站大全 | 久久99久久99精品免观看软件 | 国产精品专区一 | 国产一区二区在线观看视频 | 日韩av手机在线看 | 欧美黑人巨大xxxxx | 成年人免费在线观看网站 | 欧美极品少妇xbxb性爽爽视频 | 欧美日产一区 | 久草视频在线免费 | av电影在线观看 | 日韩av一区二区在线影视 | 91精品国产乱码 | www激情网| 亚欧日韩av| 国产另类av | 精品国产免费久久 | bbb搡bbb爽爽爽 | 欧产日产国产69 | 欧美日韩国产一二三区 | 夜夜夜夜猛噜噜噜噜噜初音未来 | 久久成人麻豆午夜电影 | 国产精品1区2区在线观看 | 中文字幕在线一区观看 | 国产伦理一区二区三区 | 97国产超碰 | 久久不卡国产精品一区二区 | 日韩欧美中文 | 激情婷婷色 | 九九热免费视频在线观看 | 国产视频每日更新 | 探花视频免费观看高清视频 | 日韩精品三区四区 | 黄色免费网战 | 国产在线高清视频 | av黄色免费网站 | 欧美日韩天堂 | 国产伦精品一区二区三区高清 | 在线欧美中文字幕 | 麻豆国产在线视频 | 国产一区免费在线 | 丰满少妇一级 | 青青河边草免费直播 | 在线观看视频你懂的 | 精品欧美一区二区在线观看 | 在线观看一区二区精品 | 日韩在线高清 | 日韩免费看 | 亚洲成av人影院 | 中文字幕黄色av | www.夜夜操 | 最近中文字幕视频完整版 | 五月婷婷伊人网 | 成人久久 | 最近免费中文字幕mv在线视频3 | 久草在线免费资源 | 人人干天天射 | 激情伊人五月天久久综合 | 97电院网手机版 | 久久网站av| avv天堂| 国产不卡在线观看视频 | 日韩精品视频免费 | 日韩丝袜视频 | 九九热免费视频在线观看 | 五月天综合网站 | 午夜精品一区二区三区可下载 | 免费看一级特黄a大片 | 亚洲欧美激情精品一区二区 | 免费看的黄色 | 看国产黄色片 | 天堂网一区二区三区 | 粉嫩av一区二区三区四区 | 国内免费久久久久久久久久久 | 午夜在线免费视频 | 免费裸体视频网 | 少妇性bbb搡bbb爽爽爽欧美 | 天天色欧美| 香蕉久草在线 | 五月婷婷av在线 | 日韩精品91偷拍在线观看 | 久草久草在线观看 | 国产高清av在线播放 | 久久久久久久久久国产精品 | 超碰在线观看99 | 欧美日韩精品在线观看 | 99热这里只有精品免费 | 安徽妇搡bbbb搡bbbb | 精品亚洲午夜久久久久91 | 在线不卡a | 欧美精品在线观看免费 | 日韩精品短视频 | 亚洲h色精品 | 国产特级毛片aaaaaa毛片 | 国产xx视频 | 亚洲va男人天堂 | 99se视频在线观看 | 日韩精品免费一线在线观看 | 欧美日韩一区二区免费在线观看 | 在线观看亚洲精品视频 | 久久久国产一区 | 精品产品国产在线不卡 | 黄色成人影院 | 视频一区二区精品 | 日韩av手机在线观看 | 国产视频在线一区二区 | 成人h视频在线 | 国产97在线观看 | 中文字幕丝袜美腿 | 黄色免费在线视频 | 激情av五月婷婷 | 伊人激情综合 | 天堂在线一区 | 国产成人精品一区二区三区免费 | 美女免费视频观看网站 | 中文字幕免费高清在线观看 | 久久久久免费精品国产 | 日韩影视在线观看 | 日本最新一区二区三区 | 久久av在线播放 | 狠狠干夜夜| 亚洲成av人片在线观看www | 日本在线观看视频一区 | 久久久国产精品网站 | 在线播放视频一区 | 天天干夜夜爱 | 国产一区在线不卡 | 国产午夜三级一区二区三 | 欧美巨乳网 | 日韩精品久久久久久久电影99爱 | 色婷婷在线视频 | 特级毛片在线 | 中文字幕在线资源 | www.日韩免费| 久久精品久久久精品美女 | 视频91| 国产精品毛片久久久久久久久久99999999 | 日韩专区 在线 | www91在线| 黄在线免费看 | 久久综合九色综合97婷婷女人 | 日韩高清免费在线 | 日韩在线免费小视频 | 日韩欧美一区二区在线 | 在线观看va | 五月天婷亚洲天综合网鲁鲁鲁 | 亚洲男男gaygayxxxgv | 国产精品久久久久久欧美 | 久久这里有精品 | 精品视频亚洲 | 美女国产网站 | 丁香久久综合 | 91桃色国产在线播放 | 99视频精品免费视频 | 天天摸天天舔 | 丁香婷婷综合网 | 男女免费视频观看 | 亚洲激情中文 | 婷婷久久五月 | 欧美成人一二区 | 色网免费观看 | 亚洲精品高清在线观看 | 久久福利国产 | 国产精久久久 | 美女精品在线观看 | 天天综合成人 | av成人免费在线看 | 免费观看成人 | 久久久高清免费视频 | 国产一级性生活视频 | 欧美福利精品 | 午夜精品视频一区 | 麻豆一区二区三区视频 | 国产糖心vlog在线观看 | 99精品欧美一区二区蜜桃免费 | 亚洲黄色在线 | 国内精品福利视频 | 手机av网站| 操操操日日日干干干 | 成人黄大片 | www日韩欧美| 成人三级视频 | 在线视频观看亚洲 | 国产又黄又猛又粗 | 亚洲黄色在线观看 | 在线黄色国产电影 | 久久精品国产美女 | 日韩在线观看你懂的 | www.99热精品 | 精品国产成人av在线免 | 天天操天天干天天爱 | 国产中出在线观看 | 亚州精品在线视频 | 五月开心婷婷 | 黄网站色欧美视频 | 人人爽爽人人 | 五月天色网站 | 热久久这里只有精品 | 国产尤物一区二区三区 | 久久av电影 | 超碰人人超碰 | 免费国产视频 | 色综合久久久久久中文网 | 色香网| 久草视频中文在线 | 免费高清在线观看电视网站 | 黄网站大全 | 国产在线视频一区二区三区 | 免费看久久久 | 肉色欧美久久久久久久免费看 | 婷婷电影在线观看 | 久久国产精品99久久久久久老狼 | 97超视频 | 国产精品av在线免费观看 | .国产精品成人自产拍在线观看6 | 日韩在线不卡视频 | 久精品在线观看 | 久久99精品久久久久蜜臀 | 国产精品二区在线观看 | 久久一区二区三区国产精品 | 中文在线√天堂 | 久久理论影院 | 欧美 日韩 久久 | 91精品国产入口 | 涩五月婷婷| 婷婷视频在线 | 中文字幕人成不卡一区 | 美女天天操 | 国产99在线播放 | 国产成人精品日本亚洲999 | 色综合中文综合网 | 国产91精品看黄网站在线观看动漫 | 日韩av免费在线电影 | 日韩激情视频在线观看 | 黄色一级片视频 | 久久精品99 | 久草在线免费电影 | 亚洲精品在线观看av | 成人午夜剧场在线观看 | 欧洲亚洲国产视频 | 美女网站视频久久 | 久久久高清免费视频 | 国产一区二区中文字幕 | 日韩视频在线观看视频 | 黄色软件网站在线观看 | 国产91电影在线观看 | 黄a在线看 | 99久久精品国产亚洲 | 日本资源中文字幕在线 | 韩国一区二区三区在线观看 | 玖玖玖精品| 久久日韩精品 | 成人97人人超碰人人99 | 国产一区在线观看免费 | 成年人看片网站 | 久久激情视频 | 久久精品专区 | av成人动漫在线观看 | 丝袜制服综合网 | 国产玖玖在线 | 久久伊人八月婷婷综合激情 | 亚洲在线视频观看 | 精品麻豆入口免费 | 成人网看片 | 国产高清免费av | 国产精品国产三级国产aⅴ9色 | 亚洲电影在线看 | 国产黄色免费看 | 天天操天天操天天操 | 精品福利视频在线 | 18性欧美xxxⅹ性满足 | 亚洲黄色免费在线 | 国产在线观看国语版免费 | 久久福利小视频 | 精品无人国产偷自产在线 | 黄色三级免费看 | 免费福利在线观看 | 午夜精品三区 | 国产精品福利久久久 | 久草电影在线观看 | 国产一级特黄毛片在线毛片 | 97国产精品亚洲精品 | 五月婷婷综 | 精品国产99 | 亚州精品在线视频 | 精品国产成人av | ww视频在线观看 | 久久久99精品免费观看 | 岛国精品一区二区 | 91精品国产麻豆 | 99 视频 高清 | 久久草视频 | 日本视频久久久 | 三级黄色在线观看 | 欧美精品在线免费 | 精品一区电影 | 在线视频 影院 | 成人精品久久 | 8x8x在线观看视频 | 丁香婷婷激情国产高清秒播 | 亚洲精品欧美精品 | 久久精品久久综合 | 伊人超碰在线 | 伊人伊成久久人综合网站 | 欧美大jb| 亚洲aⅴ免费在线观看 | 中文字幕 国产视频 | 麻豆免费在线播放 | 日韩a欧美 | 91麻豆精品国产午夜天堂 | 91福利免费| 99久高清在线观看视频99精品热在线观看视频 | 久久99精品国产麻豆婷婷 | 亚洲国产日韩精品 | 久久电影网站中文字幕 | 日日爱av| 午夜精品久久久久久久爽 | 成年人精品 | 成人黄色在线视频 | 精品国产黄色片 | 伊人国产女 | 日韩视频一二三区 | 最新中文字幕在线播放 | 一区二区三区免费播放 | 国产无吗一区二区三区在线欢 | 日韩一区视频在线 | 成年人视频在线观看免费 | 久久电影日韩 | 丰满少妇高潮在线观看 | 亚洲开心激情 | 婷婷久久五月 | 久草视频免费 | 91久久精品一区 | 天天草天天插 | 日本成址在线观看 | 天天色天天爱天天射综合 | 午夜丁香视频在线观看 | 西西4444www大胆艺术 | 在线观看精品一区 | 亚洲视频 中文字幕 | av片一区二区 | 国产麻豆精品在线观看 | 视频在线91 | 日韩电影在线一区二区 | 91在线在线观看 | 国产精品毛片 | 18国产精品福利片久久婷 | 一二三区高清 | 久久午夜精品影院一区 | 国产精品久久久久久久久久久杏吧 | 国内精自线一二区永久 | 超碰精品在线观看 | avav片| 九九有精品| 成人免费 在线播放 | 五月婷婷久草 | 五月婷婷激情五月 | 国产激情久久久 | 久草在线最新免费 | 亚洲天堂网视频在线观看 | 天天操天天爱天天干 | 色综合久久中文字幕综合网 | av免费看av | 婷婷五天天在线视频 | 久久免费视频这里只有精品 | 亚洲最大成人免费网站 | 在线观看日本韩国电影 | 国产黄色片免费在线观看 | 中文字幕在线一二 | 久草在线免 | 亚洲国产高清在线观看视频 | 成在线播放 | 99视频偷窥在线精品国自产拍 | 天天碰天天操视频 | se视频网址 | 99久久精品免费视频 | 亚洲a在线观看 | 69国产盗摄一区二区三区五区 | 日韩在线免费 | v片在线播放 | 久久9视频 | av片子在线观看 | 手机看片1042 | 一区二区三区 亚洲 | 人人看人人做人人澡 | 国产97色在线| 韩国三级av在线 | 欧美日韩激情视频8区 | 在线免费黄 | 国产午夜精品福利视频 | 在线免费国产 | 九九日九九操 | 久久综合九色综合97婷婷女人 | 国产一区欧美二区 | a级国产乱理伦片在线播放 久久久久国产精品一区 | 月丁香婷婷 | 欧美99热| 99久久精品电影 | 四虎影视成人永久免费观看视频 | 亚洲成人资源在线观看 | 在线91播放 | 免费av高清 | 国产精品久久电影观看 | 国产在线色 | 深夜精品福利 | 国产精品自在线 | 99免费国产 | 91免费在线看片 | 久久久国产99久久国产一 | 欧美日韩在线电影 | 四虎在线视频 | 黄色在线免费观看网站 | 日p在线观看| 免费精品在线观看 | 天天操天天艹 | 国产精品成人a免费观看 | 久久久视屏| 黄色av观看 | 天天射天天射 | 狠狠狠狠狠狠狠狠 | 日韩精品久久一区二区 | 国产精品wwwwww | 99人成在线观看视频 | 亚洲午夜久久久久久久久电影网 | 日韩av片无码一区二区不卡电影 | 国产资源中文字幕 | 精品99999 | 久久99精品久久久久久清纯直播 | 中文字幕在线国产 | 成人av资源网 | 日韩三区在线观看 | 一区二区视频欧美 | 激情丁香婷婷 | 草久中文字幕 | 国产日本在线观看 | 丁香花在线视频观看免费 | 亚洲精品午夜久久久久久久久久久 | 日韩美女黄色片 | 国偷自产中文字幕亚洲手机在线 | 国产伦理久久精品久久久久_ | 97电影网手机版 | 园产精品久久久久久久7电影 | 欧美激情视频一区二区三区 | 91亚洲国产成人久久精品网站 | 欧美91精品久久久久国产性生爱 | 久久久久久高潮国产精品视 | 成年人在线免费看视频 | 狠狠狠色狠狠色综合 | 97视频在线免费观看 | 日韩在线视频免费播放 | 精品国产伦一区二区三区观看体验 | 亚洲精品www| 亚洲精品玖玖玖av在线看 | 国产自偷自拍 | 中文字幕视频三区 | 中文字幕在线播放第一页 | 国产在线观看黄 | 日韩中文字幕在线看 | 我要看黄色一级片 | 日韩免费电影一区二区三区 | 国产原创在线 | 欧美天堂视频在线 | 国产成免费视频 | av在线电影网站 | 久草精品视频 | 91最新视频在线观看 | 日本精品午夜 | 国产美女永久免费 | 精品九九九九 | 欧美日韩99| 少妇bbb| 国产亚洲人 | 四虎在线免费观看 | 毛片a级片 | 国产a级片免费观看 | 麻豆国产在线播放 | 久久久久久久久久久福利 | 九九精品视频在线看 | 国产精品久久久久久久久久三级 | av片一区| 欧美极品少妇xbxb性爽爽视频 | 摸bbb搡bbb搡bbbb| 国产美女无遮挡永久免费 | 在线视频手机国产 | www.亚洲在线 | 久久露脸国产精品 | 国产系列 在线观看 | 久久欧美在线电影 | 国产男女无遮挡猛进猛出在线观看 | 91精品久久久久久综合五月天 | 91麻豆视频 | 青青草国产成人99久久 | 91视频免费看片 | 天天爽天天爽夜夜爽 | 91av视频免费观看 | 涩五月婷婷 | 午夜视频在线网站 | 91在线免费播放 | 97视频免费观看2区 亚洲视屏 | 亚洲丁香日韩 | 久久精品在线视频 | 久久亚洲免费视频 | 国产一区免费视频 | 精品电影一区 | 91中文字幕在线播放 | 91最新中文字幕 | 成人a视频 | 欧洲亚洲女同hd | 视频在线观看日韩 | 美女视频黄在线 | 午夜国产福利在线观看 | www久久国产 | 午夜三级毛片 | 精品黄色片 | www.色午夜.com| www.99av| 最新国产精品久久精品 | 精品国产99 | 久久不卡国产精品一区二区 | av在线亚洲天堂 |