1. 程式人生 > >solr基本查詢和高階查詢

solr基本查詢和高階查詢

查詢引數

常用:

  • q - 查詢字串,必須的
  • fl - 指定返回那些欄位內容,用逗號或空格分隔多個。
  • start - 返回第一條記錄在完整找到結果中的偏移位置,0開始,一般分頁用。
  • rows - 指定返回結果最多有多少條記錄,配合start來實現分頁。
  • sort - 排序,格式:sort=<field name>+<desc|asc>[,<field name>+<desc|asc>]。示例:(inStock desc, price asc)表示先 "inStock" 降序, 再 "price" 升序,預設是相關性降序。
  • wt - (writer type)指定輸出格式,可以有 xml, json, php, phps。
  • fq - (filter query)過慮查詢,作用:在q查詢符合結果中同時是fq查詢符合的,例如:q=mm&fq=date_time:[20081001 TO 20091031],找關鍵字mm,並且date_time是20081001到20091031之間的
  • 注意:solr查詢時間為UTC 格式(2013-04-25T22:22:12.000Z)
  • 如:
    • timestamp:[* TO NOW]

    • createdate:[1976-03-06T23:59:59.999Z TO *]

    • createdate:[1995-12-31T23:59:59.999Z TO 2007-03-06T00:00:00Z]

    • pubdate:[NOW-1YEAR/DAY TO NOW/DAY+1DAY]

    • createdate:[1976-03-06T23:59:59.999Z TO 1976-03-06T23:59:59.999Z+1YEAR]

    • createdate:[1976-03-06T23:59:59.999Z/YEAR TO 1976-03-06T23:59:59.999Z]

不常用:

  • defType
  • q.op - 覆蓋schema.xml的defaultOperator(有空格時用"AND"還是用"OR"操作邏輯),一般預設指定
  • df - 預設的查詢欄位,一般預設指定
  • qt - (query type)指定那個型別來處理查詢請求,一般不用指定,預設是standard。

其它:

  • indent - 返回的結果是否縮排,預設關閉,用 indent=true|on
     開啟,一般除錯json,php,phps,ruby輸出才有必要用這個引數。
  • version- 查詢語法的版本,建議不使用它,由伺服器指定預設值。

檢索運算子

  • : 指定欄位查指定值,如返回所有值:
  • ? 表示單個任意字元的通配
  • * 表示多個任意字元的通配(不能在檢索的項開始使用*或者?符號)
  • ~ 表示模糊檢索,如檢索拼寫類似於"roam"的項這樣寫:roam~將找到形如foam和roams的單詞;roam~0.8,檢索返回相似度在0.8以上的記錄。 鄰近檢索,如檢索相隔10個單詞的"apache"和"jakarta","jakarta apache"~10
  • ^ 控制相關度檢索,如檢索jakarta apache,同時希望去讓"jakarta"的相關度更加好,那麼在其後加上""符號和增量值,即jakarta4 apache
  • 布林操作符AND、||
  • 布林操作符OR、&&
  • 布林操作符NOT、!、-(排除操作符不能單獨與項使用構成查詢)
  • + 存在操作符,要求符號"+"後的項必須在文件相應的域中存在
  • () 用於構成子查詢
  • [] 包含範圍檢索,如檢索某時間段記錄,包含頭尾,date:[200707 TO 200710]
  • {}不包含範圍檢索,如檢索某時間段記錄,不包含頭尾,date:{200707 TO 200710}
  • " 轉義操作符,特殊字元包括+ - && || ! ( ) { } [ ] ^ " ~ * ? : "

示例

  • 1. 查詢所有
http://localhost:8080/solr/primary/select?q=*:*
  • 2. 限定返回欄位
http://localhost:8080/solr/primary/select?q=*:*&fl=productId

表示:查詢所有記錄,只返回productId欄位

  • 3. 分頁
http://localhost:8080/solr/primary/select?q=*:*&fl=productId&rows=6&start=0

表示:查詢前六條記錄,只返回productId欄位

  • 4. 增加限定條件
http://localhost:8080/solr/primary/select?q=*:*&fl=productId&rows=6&start=0&fq=category:2002&fq=namespace:d&fl=productId+category&fq=en_US_city_i:1101

表示:查詢category=2002、en_US_city_i=110以及namespace=d的前六條記錄,只返回productId和category欄位

  • 5. 新增排序
http://localhost:8080/solr/primary/select?q=*:*&fl=productId&rows=6&start=0&fq=category:2002&fq=namespace:d&sort=category_2002_sort_i+asc

表示:查詢category=2002以及namespace=d並按category_2002_sort_i升序排序的前六條記錄,只返回productId欄位

  • 6. facet查詢

現實分組統計結果

http://localhost:8080/solr/primary/select?q=*:*&fl=productId&fq=category:2002&facet=true&facet.field=en_US_county_i&facet.field=en_US_hotelType_s&facet.field=price_p&facet.field=heatRange_i

http://localhost:8080/solr/primary/select?q=*:*&fl=productId&fq=category:2002&facet=true&facet.field=en_US_county_i&facet.field=en_US_hotelType_s&facet.field=price_p&facet.field=heatRange_i&facet.query=price_p:[300.00000+TO+*]

facet   

基本引數:


具體例項和用法參考:

group  




查詢的url:

http://localhost:8080/solr/my_solr/select?q=province:湖&wt=xml&indent=true&rows=100&group=true&group.field=province&group.field=province&group.limit=20&group.ngroups=true

group=true:設定開啟分組查詢

group.field=province:設定分組欄位

group.limit=20:設定分組後展示分組下資料量

group.ngroups=true:設定為true表示會返回分組的分組

下面是查詢結果:

  1. <response>
  2. <lstname="responseHeader">
  3. <intname="status">0</int>
  4. <intname="QTime">81</int>
  5. <lstname="params">
  6. <strname="q">province:湖</str>
  7. <strname="indent">true</str>
  8. <strname="group.limit">20</str>
  9. <strname="rows">100</str>
  10. <strname="group.ngroups">true</str>
  11. <strname="wt">xml</str>
  12. <arrname="group.field">
  13. <str>province</str>
  14. <str>province</str>
  15. </arr>
  16. <strname="group">true</str>
  17. </lst>
  18. </lst>
  19. <lstname="grouped">
  20. <lstname="province">
  21. <intname="matches">13</int>
  22. <intname="ngroups">3</int>
  23. <arrname="groups">
  24. <lst>
  25. <strname="groupValue">1</str>
  26. <resultname="doclist"numFound="1"start="0">
  27. <doc>
  28. <strname="id">10</str>
  29. <strname="province">湖1</str>
  30. <strname="suggestText">湖1</str>
  31. <longname="_version_">1535191400888401920</long>
  32. </doc>
  33. </result>
  34. </lst>
  35. <lst>
  36. <strname="groupValue">2</str>
  37. 相關推薦

    solr基本查詢高階查詢

    查詢引數常用:q - 查詢字串,必須的。fl - 指定返回那些欄位內容,用逗號或空格分隔多個。start - 返回第一條記錄在完整找到結果中的偏移位置,0開始,一般分頁用。rows - 指定返回結果最多有多少條記錄,配合start來實現分頁。sort - 排序,格式:sort

    Orale基本查詢高階查詢個別例子

    emp表格 DEPT表格 ---------------------------------------------------- --DISTINCT  用於去除結果集 --中指定欄位的重複值 --DISTINCT  只能在select關鍵字之後 --DIS

    Hbase常用面試題高階查詢

    Hbase常用面試題和高階查詢 一、HBase的工作方式   hbase表中的資料按照行鍵的字典順序排序,hbase表中的資料按照行的的方向切分為多個region,最開始只有一個region 隨著資料量的增加 產生分裂 這個過程不停的進行 一個表可能對應一個或多個region。regio

    MySQL查詢過程高階查詢

    通過中篇的介紹,你會了解到: MySQL查詢過程 高階查詢相關概念 explain命令詳細介紹 索引優化建議 MySQL查詢過程 想要更好的優化查詢,首先要了解其整體查詢過程,從客戶端傳送查詢請求,到接收到查詢結果,MySQL伺

    mongoDB的高階查詢高階修改

    db.c1.remove();    刪除c1集合中所有的資料 db.c1.remove("條件");    刪除c1集合中符合條件的所有的資料 修改資料把user3修改成user30: 若已經插入db.c1.insert({name:"user3",age:30}); { "_id" : ObjectId(

    算法系列(二)查詢演算法--基本查詢二分查詢

    在 算法系列(一)基本概念 一文中,簡單介紹了演算法基本概念,演算法複雜度評估,常用演算法證明方式。這篇文章介紹一下查詢演算法,主要是二分查詢演算法。 從n個元素中A0,A1....An-1中,找到要

    JPA2.0 criteriaBuilder 模糊查詢高階選擇搜尋查詢

    需求 JPA2.0 criteriaBuilder 高階處理模糊查詢和高階選擇搜尋查詢 解決: 1.如果使用SQL拼接使用的是連續的 if(){} if(){}… 來拼接字串 2.jp

    springMVC、myBatis的物理分頁高階查詢

    最新專案用到springMVC和mybatis,分頁其實用一個RowBounds可以實現,但是高階查詢不好封裝, 經過反覆測試,總算搞出來了,感覺封裝的不是很好,有待優化和提高! 原理:利用mybatis自定義外掛功能,自定義一個攔截器,攔截需要分頁的sql

    連接查詢分組查詢

    des titles 時也 每次 多表連接 分類 inner name 通過 一.使用group by 進行分組查詢 語法: Select 列名 From 表名 Group by 列名 1.查詢男女學生的人數格式多少 分析: 首先按照性別進行分組:group by SSe

    鏈接查詢分組查詢

    多個 查詢信息 sel bsp sql語句 聚合函數 列名 del out 分組查詢 select 查詢信息 from 表名where 條件group by 按照列分組(可多個 ,隔開)order by 排序方式(查詢信息如果列名和聚合函數同時出現,要麽在聚合函數中出現,

    python3開發進階-Django框架中的ORM的常用操作的補充(F查詢Q查詢,事務)

    這樣的 env atomic 實例 In git 必須 TE setup 閱讀目錄 F查詢和Q查詢 事務 一、F查詢和Q查詢 1、F查詢 查詢前的準備 class Product(models.Model): name = mod

    Django基礎—— 14.聚合查詢分組查詢

    分享圖片 技術 基礎 http bubuko png src 查詢 djang Django基礎—— 14.聚合查詢和分組查詢

    第64篇 自關聯 分組查詢聚合查詢 Q查詢 F查詢 ORM進階

    1. 刪除‘alex’所帶班級的 的全部學生 2. 自關聯             3. 多對多的自關聯        symmetric &nbs

    F查詢Q查詢,摘自李文周老師

    upd 函數 組合 收藏 在一起 price net contains lis F查詢和Q查詢 F查詢 在上面所有的例子中,我們構造的過濾器都只是將字段值與某個常量做比較。如果我們要對兩個字段的值做比較,那該怎麽做呢? Django 提供 F() 來做這樣的比較。F() 的

    Django_外來鍵查詢查詢

    一、ForeignKey @property裝飾器的作用是返回一個屬性特性,在資料庫中也有一些小技巧可以拿來用,比如今天要寫的外來鍵查詢和反向查詢的內容。 1 from django.db import models 2 3 class Person(models.Model): 4

    orm聚合查詢、分組查詢、F查詢Q查詢

    all where 最大 ota lte rom gate first 紅樓夢 1.聚合查詢(Avg,Count,Max,Min,Sum) Avg為求平均數,Count為求個數,Max為求最大值,Min為求最小值,Sum為求和 以Avg舉例 from django.db.m

    資料查詢之連線查詢、子查詢聯合查詢

    一、連線查詢 基本含義:將兩個以上的表(資料來源),連線起來成為一個數據源。 基本形式:from 表1 [連線方式] join 表2 [on 連線條件] join 為連線查詢關鍵字--必須 [連線方式] [on 連線條件]為可選性  交叉連線:&nb

    Django-ORM的F查詢Q查詢

    當一般的查詢語句已經無法滿足我們的需求時,Django為我們提供了F和Q複雜查詢語句。假設場景一:老闆說對資料庫中所有的商品,在原價格的基礎上漲價10元,你該怎麼做?場景二:我要查詢一個名字叫xxx,年齡是18歲,或者名字是yyy,年齡是是19歲的人,你該怎麼寫你的ORM語句?   一、F查詢

    Es學習第九課, 聚合查詢複合查詢

    ES除了實現前幾課的基本查詢,也可以實現類似關係型資料庫的聚合查詢,如平均值sum、最小值min、最大值max等等 我們就用上一課的資料作為參考來舉例 聚合查詢 sum聚合 sum是一個求累加值的聚合,其作用與關係型資料庫中相同。 GET /lib4/items/_search { "si

    mysql8學習手冊第三部分查詢查詢

    Selecting data into a file and table To save the output into a file, you need the FILE privilege. FILE is a global privilege, which means you