Solr之精確、匹配、排序、模糊查詢-yellowcong
Solr查詢資料,其實下面一堆的引數,我也沒有做測試,只是轉載過來了,我大概只用了高亮、排序、查詢、分頁,其他的好像沒有用過,以後用再來查
一.基本查詢
引數 | 意義 |
---|---|
q | 查詢的關鍵字,此引數最為重要,例如,q=id:1,預設為q=:, |
fl | 指定返回哪些欄位,用逗號或空格分隔,注意:欄位區分大小寫,例如,fl= id,title,sort |
start | 返回結果的第幾條記錄開始,一般分頁用,預設0開始 |
rows | 指定返回結果最多有多少條記錄,預設值為 10,配合start實現分頁 |
sort | 排序方式,例如id desc 表示按照 “id” 降序 |
wt | (writer type)指定輸出格式,有 xml, json, php等 |
fq | (filter query)過慮查詢,提供一個可選的篩選器查詢。返回在q查詢符合結果中同時符合的fq條件的查詢結果,例如:q=id:1&fq=sort:[1 TO 5],找關鍵字id為1 的,並且sort是1到5之間的。 |
df | 預設的查詢欄位,一般預設指定。 |
qt | (query type)指定那個型別來處理查詢請求,一般不用指定,預設是standard。 |
indent | 返回的結果是否縮排,預設關閉,用 indent=true |
version | 查詢語法的版本,建議不使用它,由伺服器指定預設值。 |
二. Solr的檢索運算子
符號 | 意義 |
---|---|
“:” | 指定欄位查指定值,如返回所有值: |
“?” | 表示單個任意字元的通配 |
“*” | 表示多個任意字元的通配(不能在檢索的項開始使用*或者?符號) |
“~” | 表示模糊檢索,如檢索拼寫類似於”roam”的項這樣寫:roam~將找到形如foam和roams的單詞;roam~0.8,檢索返回相似度在0.8以上的記錄。 |
AND || |
布林操作符 |
OR、&& | 布林操作符 |
NOT、!、- | (排除操作符不能單獨與項使用構成查詢) |
“+” | 存在操作符,要求符號”+”後的項必須在文件相應的域中存在² |
( ) | 用於構成子查詢 |
[] | 包含範圍檢索,如檢索某時間段記錄,包含頭尾,date:[201507 TO 201510] |
{} | 不包含範圍檢索,如檢索某時間段記錄,不包含頭尾date:{201507 TO 201510} |
三. 高亮
符號 | 意義 |
---|---|
h1 |
|
hl.fl |
|
hl.requireFieldMatch |
|
hl.usePhraseHighlighter |
|
hl.highlightMultiTerm |
|
hl.fragsize | -返回的最大字元數。預設是100.如果為0,那麼該欄位不會被fragmented且整個欄位的值會被返回。 |
四. 分組
這是facet的官方wiki,裡面有facet各個引數的詳細說明。所以這裡只說一些常用的。
Facet是Solr的核心搜尋功能,主要是導航(Guided Navigation)、引數化查詢(Paramatic Search)。Facet的主要好處是在搜尋的同時,可以按照Facet條件進行分組統計,給出導航資訊,改善搜尋體驗。
Facet主要分為:Field Facet 和 Date Facet 兩大類
1. Field Facet
facet 引數欄位必須被索引
facet=on 或 facet=true
facet.field 分組的欄位
facet.prefix 表示Facet欄位字首
facet.limit Facet欄位返回條數
facet.offict 開始條數,偏移量,它與facet.limit配合使用可以達到分頁的效果
facet.mincount Facet欄位最小count,預設為0
facet.missing 如果為on或true,那麼將統計那些Facet欄位值為null的記錄
facet.sort 表示 Facet 欄位值以哪種順序返回 .格式為 true(count)|false(index,lex),true(count) 表示按照 count 值從大到小排列,false(index,lex) 表示按照欄位值的自然順序 (字母 , 數字的順序 ) 排列 . 預設情況下為 true(count)
2. Date Facet
對日期型別的欄位進行 Facet. Solr 為日期欄位提供了更為方便的查詢統計方式 .注意 , Date Facet的欄位型別必須是 DateField( 或其子型別 ). 需要注意的是 , 使用 Date Facet 時 , 欄位名 , 起始時間 , 結束時間 , 時間間隔這 4 個引數都必須提供 .
符號 | 意義 |
---|---|
facet.date | 該引數表示需要進行 Date Facet 的欄位名 , 與 facet.field 一樣 , 該引數可以被設定多次 , 表示對多個欄位進行 Date Facet. |
facet.date.start | 起始時間 , 時間的一般格式為 ” 2015-12-31T23:59:59Z”, 另外可以使用 ”NOW”,”YEAR”,”MONTH” 等等 , |
facet.date.end | 結束時間 |
facet.date.gap | 時間間隔,如果 start 為 2015-1-1,end 為 2016-1-1,gap 設定為 ”+1MONTH” 表示間隔1 個月 , 那麼將會把這段時間劃分為 12 個間隔段 . |
facet.date.hardend | 表示 gap 迭代到 end 時,還剩餘的一部分時間段,是否繼續去下一個間隔. 取值可以為 true |
例 start 為 2015-1-1,end 為 2015-12-21,gap 為 ”+1MONTH”, 如果hardend 為 false,則,最後一個時間段為 2015-12-1 至 2016-1-1; 反之,如果 hardend 為 true,則,最後一個時間段為 2015-12-1 至 2015-12-21.
注意:Facet的欄位必須被索引,無需分詞,無需儲存。無需分詞是因為該欄位的值代表了一個整體概念,無需儲存是因為一般而言使用者所關心的並不是該欄位的具體值,而是作為對查詢結果進行分組的一種手段,給出相關的分組資訊,從而改善搜尋體驗。
相關推薦
Solr之精確、匹配、排序、模糊查詢-yellowcong
Solr查詢資料,其實下面一堆的引數,我也沒有做測試,只是轉載過來了,我大概只用了高亮、排序、查詢、分頁,其他的好像沒有用過,以後用再來查 一.基本查詢 引數意義 q 查詢的關鍵字,此引數最為重要,例如,q=id:1,預設為q=:, fl 指定返回哪些欄位,用逗
常用內部排序演算法之四:簡單選擇排序、直接插入排序和氣泡排序
前言 之所以把這三類演算法放在一塊,是因為除此之外的演算法都是在這三類演算法的基礎上進行優化的。簡單選擇排序的思想是每一趟n−i+1(i=1,2,...,n−1)個記錄中選擇最小的記錄作為有序序列的第i個記錄。直接插入排序的思想是將一個記錄插入到已經排好序的有
資料結構之直接插入排序、折半插入排序、希爾排序演算法
哪個成功的人不是一路坎坷過來的,只有這樣你才知道珍惜,知道成功的不易。有時候太容易得到的東西反而不知道珍惜。 直接插入排序: 我們的記錄本身就是基本有序的,我們只需要少量的插入操作,就可以完成整個記錄集的排序工作,此時直接插入很高效。還有就是記錄數比較少時,直接插入的優勢
淺談C++之冒泡排序、希爾排序、快速排序、插入排序、堆排序、基數排序性能對比分析(好戲在後面,有圖有真相)
棧溢出 分享圖片 隨機數 函數 大根堆 oschina 共同學習 時間復雜度 還原 由於沒考慮到一些情況,對以上一些算法做了改進和對比!以及昨晚把希爾排序寫錯而誤以為其效率高過快速排序的糗事,今天一一做了更正和說明,如果你絕得本隨筆不是很妥可以嘗試看看這http://www
JavaScript 資料結構與演算法之美 - 歸併排序、快速排序、希爾排序、堆排序
1. 前言 演算法為王。 想學好前端,先練好內功,只有內功深厚者,前端之路才會走得更遠。 筆者寫的 JavaScript 資料結構與演算法之美 系列用的語言是 JavaScript ,旨在入門資料結構與演算法和方便以後複習。 之所以把歸併排序、快速排序、希爾排序、堆排序放在一起比較,是因為它們的平均時
插入排序、合並排序、堆排序和快速排序
dom public and chang 大堆 第一個 復雜 快速排序 oid 1 * 插入排序 2 * 時間復雜度O(n2) 3 * @param array原地排序算法 4 */ 5 public void insertSort(int[] arr
排序演算法(直接插入、氣泡排序、選擇排序、快速排序、希爾排序、堆排序、歸併排序)
main函式 int main() { int data[] = {1,2,6,3,4,7,7,9,8,5}; //bubble_sort(data,10); //select_sort(data,10); Insert_Sort(data,10); fo
今日分資料結構作業:氣泡排序、堆排、希爾排序、快排……
先看實驗報告: 好吧,這次實驗報告沒有什麼好吐槽的,安安分分的寫了好久。 bug無數,雖然之前寫過,但是沒這麼詳細。 程式碼+註釋: import java.io.*; import java.util.Arrays; public class Main3 {
演算法初級02——荷蘭國旗問題、隨機快速排序、堆排序、桶排序、相鄰兩數的最大差值問題、工程中的綜合排序演算法
主要討論:荷蘭國旗問題、隨機快速排序、堆排序、穩定性、比較器、桶排序、相鄰兩數的最大差值問題和簡單介紹工程中的綜合排序演算法 題目一 給定一個數組arr,和一個數num,請把小於等於num的數放在陣列的左邊,大於num的數放在陣列的右邊。 要求額外空間複雜度O(1),時間複雜度O(N)
排序下篇(快速排序、並歸排序、堆排序、桶排序/基數排序)
5.快速排序 (1)原理: 在要排序的一組數中,通過一趟排序將待排記錄分隔成獨立的兩部分,其中一部分記錄的關鍵字均比另一部分的關鍵字小,則可分別對這兩部分記錄繼續進行排序,以達到整個序列有序。 (2)圖解:這第一次迴圈5 小黑框是已確定位置,大黑框中使用遞迴 (3)程
Python排序演算法(二) 快速排序、希爾排序、歸併排序
這篇文章有的排序演算法是:快速排序、希爾排序、歸併排序。 快速排序 ''' 快速排序 ''' def quick_sort(aList, first, last): if first >= last: return min_va
排序的模板【氣泡排序、選擇排序、直接插入排序、歸併排序、堆排序】(還有排序後面繼續補)
目錄 氣泡排序: 選擇排序: 歸併排序: 堆排序: 氣泡排序: 第一種寫法: for(int i=0;i<n-1;i++) { for(int j=0;j<n-1-i;j++) { if(a[j]>a[j-1]) swap(a[
【資料結構】直接插入排序、詳細解釋希爾排序、直接選擇排序、選擇排序的
一、直接插入排序 將一個數組進行直接插入排序,每次取陣列中一個數A儲存起來,和此數下標之前已經排好的陣列進行比較(第一次因為前面沒有數,直接取陣列第二個數),假設需要升序數列,如果A數小於要比較的數,就繼續往陣列中更小下標的數比較(在這個過程中因為A數已經儲存起
3. 排序通常有多種演算法,如氣泡排序、插入排序、選擇排序、希爾排序、歸併排序、快速排序,請選擇任意2種用java實現 [分值:20] 您的回答:(空) (簡答題需要人工評分)
3. 排序通常有多種演算法,如氣泡排序、插入排序、選擇排序、希爾排序、歸併排序、快速排序,請選擇任意2種用java實現 [分值:20] 您的回答:(空) (簡答題需要人工評分) package com.interview; /** * 各種排序演算法 */
使用js實現5種加密解密演算法(凱撒密碼、字母倒排序、單表置換、維基利亞、轉換加密演算法)
在學習作業系統的時候,我們會學到系統安全的章節,而在這一塊會有關於加密解密演算法的學習。 一共有5種常見的加密解密演算法:凱撒密碼、字母倒排序、單表置換、維基利亞、轉換加密演算法。 我使用了js實現了這5種演算法,而且做了視覺化處理、輸入輸出格式化處理,使得操作起來非常
C語言中常用排序演算法(氣泡排序、選擇排序、插入排序、希爾排序、快速排序、堆排序)實現比較
以下程式在win10 X64位作業系統,使用VS2017執行驗證可行 排序是非常重要且很常用的一種操作,有氣泡排序、選擇排序、插入排序、希爾排序、快速排序、堆排序等多種方法。 例項1 冒泡法排序 1.前言: 陣列中有N個整數,用冒泡法將它們從小到大(或從大到小)排序。冒泡法
演算法初級02——荷蘭國旗問題、隨機快速排序、堆排序
public static void heapSort(int[] arr) { if (arr == null || arr.length < 2) { return; } for (int i = 0; i <
python使用pandas模組實現檔案讀取、字串處理、去重排序、excel生成
最近學習python,用python實現一個小需求,最後寫入excel使用到pandas模組: 某中學學生在500米短跑訓練比賽中的資料,體育老師把學生成績結果記錄在檔案中(studentdata.txt),記錄格式如下: 卡納瓦, 2001-11-8,2:27,2:33,
演算法與資料結構(十三) 氣泡排序、插入排序、希爾排序、選擇排序(Swift3.0版)
本篇部落格中的程式碼實現依然採用Swift3.0來實現。在前幾篇部落格連續的介紹了關於查詢的相關內容, 大約包括線性資料結構的順序查詢、折半查詢、插值查詢、Fibonacci查詢,還包括數結構的二叉排序樹以及平衡二叉樹的構建與查詢,然後還聊了雜湊表的構建與查詢。接下來的幾篇部落格中我們就集中的聊一下常見的集中
三種基本排序-氣泡排序、直接插入排序、選擇排序
氣泡排序(從大到小) 原理:對於n個數,需要進行n-1次掃描,每次掃描通過相鄰兩個數的比較,找出最大的數,放到數列頂部。 程式: 1.氣泡排序1:每次掃描把下一個元素和最前面的元素比較,一次掃描結束後,最大的元素就在最前面了。 vo