配置好solr後,可以通過web管理界面進行管理和查詢。web界面基本列出了大多數查詢參數,可以通過這個學習lucene的查詢文法。
solr的查詢解析是通過queryparser來配置的(solrconfig.xml),一般我們用預設的即可。其各參數含義與用法簡單解釋如下:
q:查詢輸入,必須。可以使用運算符
fq:過濾查詢。可以使用運算符
sort:排序的字段,格式為field score,多個字段之間用逗号隔開,比如sum(x_f, y_f) desc, price asc,預設是score desc
start:從哪一行開始
rows:擷取多少行
fl:查詢要輸出的字段,字段之間用逗号隔開,比如title,price,seller,星号代表所有,預設就是星号。
df:定義查詢時預設的查詢field。
wt:傳回的資料類型,可以是json、xml、python、ruby、php、csv等格式。
indent:true/false,傳回的xml格式是否需要縮進(格式化展示),預設為false
debugquery:調試查詢,會輸出查詢過程的一些參數。
高亮相關:
高亮是通過searchcomponent來配置的,在solrconfig.xml中配置名為highlight的searchcomponent即可,預設的實作是solr.highlightcomponent。
hl:true/false,是否高亮顯示
hl.fl:高亮顯示的字段
hl.example.pre:高亮顯示的字首
hl.exapmle.post:高亮顯示的字尾
hl.requirefieldmatch:是否隻在查詢指定的field(隻有當hl.usephrasehighlighter為true時才生效)高亮顯示,預設是在所有field都高亮
hl.usephrasehighlighter:true/false,使用spanscorer高亮查詢短語
hl.highlightmultiterm:true/false,如果spanscorer被啟用,這個參數針對字首/模糊/範圍/通配符等開啟高亮顯示
facet:true/false
facet是solr的進階搜尋功能之一,可以給使用者提供更友好的搜尋體驗(類似于面包屑導航的功能)。在搜尋關鍵字的同時,能夠按照
facet指定的字段進行分組統計。比如商品的分類、商品的規格等。facet的字段必須被索引,無須分詞(分詞意義不大),也無須存儲。詳細可參考
《solr的facet查詢》
facet的查詢結果傳回字段為facet_counts,與responseheader、response同級。
facet.query:類似于filter的文法,對任意字段進行篩選
facet.field:需要進行facet的字段
facet.prefix:對facet字段的字首過濾
facet.sort:true/false,對facet以哪種順序傳回,true為按照count值從大到小排序,預設為true
spellcheck:拼寫檢查
spellcheck是通過component的方式實作的,你可以在solrconfig.xml檔案中配置searchcomponent來完成拼寫
檢查的功能,預設的實作是solr.spellcheckcomponent,具體的配置參數和實作原理可以看這裡
《spellcheckcomponent》
spatial:空間搜尋
spatial是專門針對空間資料進行搜尋的,空間位置的索引和存儲fieldtype是latlontype或者
spatialrecursiveprefixtreefieldtype,通過使用空間搜尋,你可以對點、面等資料建立索引,以圓形、方形或其他形狀進
行範圍搜尋,以及對搜尋結果按距離排序等等,具體的配置參數和實作原理可以看這裡《spatialsearch》
檢索運算符:
冒号":": field:value結構查詢,表示字段field值為value的查詢。
通配符:?(任意一個字元) *(任意字元)
布爾操作:and(并且,同&&) or(或者,同||) +(包含) -(不包含) not(同!),注意and、or、not均為大寫
範圍:[a to b](從a到b之間,包含a和b,注意to大寫),{a to b}(從a到b之間,不包含a和b,注意to大寫)
子運算:()括号跟數學表達式上的差不多,比如:(瓜 or 傻) and 男人
模糊檢索:~表示模糊檢索,比如:roam~将找到形如foam和roams的單詞;roam~0.8,檢索傳回相似度在0.8以上的記錄
控制相關度:^表示相關度,如檢索jakarta apache,同時希望讓”jakarta”的相關度更加好,那麼在其後加上”^”符号和增量值,即jakarta^4 apache