Solrj Java API呼叫詳解系列(二)

2021-06-29 16:15:03 字數 1961 閱讀 4579

上篇文章提到了環境搭建、與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的相關設定,許多時候給大家都造成了很大的迷惑,不知道誰先誰後,誰的優先順序高,或者具體的作用是什麼...