上篇文章提到了環境搭建、與solr建立連線以及簡單的查詢如何實現。本文將繼續介紹一些複雜的查詢api如何使用。
一、 或者關係的查詢
1、 solrquery.add(string, string… val)介面:
query.add(「name」,newstring);//name是solr的schema.xml檔案中定義的field名稱。zhangsan和lisi是要查詢的具體值。
trycatch(solrserverexception e) catch(nullpointerexceptione)
這樣查詢的結果就是name是zhangsan或者lisi的所有documents。
注意:這裡還有乙個solrquery.set(stringname, string… val)的介面,如果呼叫該介面,則將query中原有的field的值覆蓋。即:如果之前呼叫了add(「name」,」zhangsan」)。如果再呼叫set(「name」,」lisi」),則查詢的介面只能查到lisi,name這個field的查詢值被覆蓋了。
2、 solrquery.add(solrparams params)介面:
modifiablesolrparams params = new modifiablesolrparams();
params.add("name", "zhangsan");
query.add(params);
trycatch (solrserverexception e) catch(nullpointerexception e){
e.printstacktrace();
以上兩個介面慎用add和set方法。add可以追加,set可以覆蓋。
二、 並且關係的查詢
並且關係與或者關係只是在呼叫的api上有所區別,用法大體類似。
例如:查詢所有名字叫zhangsan,並且性別是男性的人員。
solrquery query = newsolrquery();
query.add(「name」,」zhangsan」);
query.addfilterquery
(「***:male」);
大家可以看到,並且關係就是給solr的fq新增乙個查詢。所有的並且關係都新增到fq中即可。
三、 類sql的in查詢
例如:查詢性別是男性,並且年齡是30歲和35歲的人員(注意:不是區間,而是年齡等於30或者35歲的人員)
solrquery query = new solrquery();
query.add(「***:male」);
query.addfilterquery(「age:30 age35」);//兩個age中間用空格分隔
四、 區間查詢
solr的區間查詢使用[~ to ~]的形式進行。
如上例中:如果將年齡的條件稍做修改,改為:年齡在30~35歲之間的人員。
solrquery query = new solrquery();
query.add(「***:male」);
query.addfilterquery(「age:[30 to 35]」);//to兩邊有空格
Solrj Java API呼叫詳解系列(四)
高階查詢部分的內容其實還有很多,詳細請參考 一 過濾查詢字段 有時查詢會的docs中可能不需要包含所有的field,只需要關注其中的幾個。那麼通過fl field list 引數的設定可以實現field的過濾。例如 solrquery query new solrquery query.setfie...
python呼叫百度ai文字識別api詳細教學
點選進入之後選擇技術文件 選擇身份證識別,我們以身份證識別為例 進行研究 本頁的下面有勢力 encoding utf 8 import requests import base64 身份證識別 request url 二進位制方式開啟檔案 f open 本地檔案 rb img base64.b64e...
Informatica Update 機制詳解
informatica update 機制詳解 informatica 作為etl工具,update是其很重要的乙個特性。也正因為如此,我們會發現在informatica工具的很多地方都會有update的相關設定,許多時候給大家都造成了很大的迷惑,不知道誰先誰後,誰的優先順序高,或者具體的作用是什麼...