solr 查詢語法解析
阿新 • • 發佈:2018-12-21
solr的查詢語法是solr應用中查詢的基礎,下文將介紹一下solr查詢中的基礎語法。
內建查詢函式
如果你想自定義搜尋結果打分機制的話,你可以組合solr內建的函式。一般情況下,你可以設定defType=edismax;bf=[自定義函式] 來設定打分機制進行排序。
solr內建的查詢函式,官方文件見 https://wiki.apache.org/solr/FunctionQuery ,中文翻譯見 http://mxsfengg.iteye.com/blog/352191
The Standard Query Parser
- ^=
文件結構定義中,存在item_title,和shop_name兩個欄位,都是text_ik型別。如果item_title能夠ik分詞匹配到,分數設定為1。
q=(item_title:毛衣)^=1 shop_name:毛衣
The DisMax Query Parser
DisMax查詢解析器旨在處理使用者輸入的簡單短語(沒有複雜的語法),並根據每個欄位的重要性使用不同的加權(提升)搜尋多個欄位中的各個術語。 其他選項使使用者能夠根據特定於每個用例的規則(獨立於使用者輸入)影響分數。
- bq
bq(boost query)引數指定一個附加的可選查詢子句,該子句將新增到使用者的主查詢中以影響分數。 例如,如果要為最近的文件新增相關性提升:q=cheese bq=date:[NOW/DAY-1YEAR TO NOW/DAY]
- bf
bf引數指定將用於構造FunctionQueries的函式(帶有可選的boost),FunctionQueries將作為將影響分數的可選子句新增到使用者的主查詢中。 可以使用Solr原生支援的任何函式以及增強值。 例如:
使用bf引數指定函式基本上只是將bq param與{!func}解析器結合使用的簡寫。recip(rord(myfield),1,2,3)^1.5
例如,如果要首先顯示最新文件,可以使用以下任一方法:bf=recip(rord(creationDate),1,1000,1000) ...or... bq={!func}recip(rord(creationDate),1,1000,1000)