国产chinesehdxxxx野外,国产av无码专区亚洲av琪琪,播放男人添女人下边视频,成人国产精品一区二区免费看,chinese丰满人妻videos

使用SolrJ

2018-01-19 10:59 更新

使用SolrJ

SolrJ是一個使Java應用程序可以輕松與Solr對話的API。SolrJ隱藏了許多連接到Solr的細節(jié),并允許您的應用程序通過簡單的高級方法與Solr進行交互。

SolrJ的中心是org.apache.solr.client.solrj包,它只包含五個主要的類。首先創(chuàng)建一個SolrClient代表你想要使用的Solr實例。然后發(fā)送SolrRequests或SolrQuerys找回SolrResponses。

SolrClient是抽象的,所以要連接到遠程Solr的情況下,您將實際創(chuàng)建一個 HttpSolrClient 或 CloudSolrClient 的實例。兩者都通過HTTP與Solr進行通信,不同之處在于HttpSolrClient使用明確的Solr URL進行配置,而CloudSolrClient是使用 SolrCloud 群集的 zkHost 字符串配置的。

單節(jié)點Solr客戶端:

String urlString = "http://localhost:8983/solr/techproducts";
SolrClient solr = new HttpSolrClient.Builder(urlString).build();

SolrCloud客戶端:

// Using a ZK Host String
String zkHostString = "zkServerA:2181,zkServerB:2181,zkServerC:2181/solr";
SolrClient solr = new CloudSolrClient.Builder().withZkHost(zkHostString).build();

// Using already running Solr nodes
SolrClient solr = new CloudSolrClient.Builder().withSolrUrl("http://localhost:8983/solr").build();

一旦你有一個SolrClient,你可以通過調用類似的方法使用它,例如query(),add()以及commit()。

構建和運行SolrJ應用程序

SolrJ API包含在Solr中,所以您不必下載或安裝其他任何東西。但是,為了構建和運行使用SolrJ的應用程序,必須將一些庫添加到類路徑中。

在構建時,本節(jié)提供的示例要求在類路徑中使用solr-solrj-x.y.z.jar。

在運行時,本節(jié)中的示例需要在“dist / solrj-lib”目錄中找到的庫。

與這些部分的示例捆綁在一起的Ant腳本在構建和運行時適當?shù)匕@些庫。

你可以通過使用Maven而不是Ant來避開大量的JAR文件。在應用程序中包含 SolrJ 所需做的所有工作是將以下依賴項放在項目的 pom. xml 中:

<dependency>
  <groupId>org.apache.solr</groupId>
  <artifactId>solr-solrj</artifactId>
  <version>x.y.z</version>
</dependency>

如果擔心SolrJ庫擴展客戶端應用程序的大小,則可以使用ProGuard之類的代碼混淆器來刪除不使用的API。

指定Solr基本URL

大多數(shù)SolrClient實現(xiàn)(例外情況:CloudSolrClient)要求用戶指定一個或多個Solr基本URL,然后客戶端將其用于向Solr發(fā)送HTTP請求。用戶在其提供的基本URL上包含的路徑會影響從此時創(chuàng)建的客戶端的行為。

  1. 指向特定核心或集合的路徑(例如:http://hostname:8983/solr/core1)。當在基本URL中指定核心或集合時,則使用該客戶端的后續(xù)請求不需要重新指定受影響的集合。但是,客戶端僅限于向該核心/集合發(fā)送請求,而不能將請求發(fā)送給其他任何人。
  2. 具有指向根Solr路徑的通用路徑的URL(例如,http://hostname:8983/solr)。如果在基本URL中未指定核心或集合,則可以向任何核心/集合發(fā)出請求,但必須在所有請求上指定受影響的核心/集合。

設置XMLResponseParser

SolrJ使用二進制格式而不是XML作為默認的響應格式。如果您正在嘗試將 Solr 和 SolrJ 版本混合在一起,其中一個版本是1.x,另一個是3.x或更高版本,那么您必須使用XML響應解析器。二進制格式在3.x中改變,兩個javabin版本完全不兼容。以下代碼將進行此更改:

solr.setParser(new XMLResponseParser());

執(zhí)行查詢

使用query()有Solr的搜索結果。您必須傳遞一個描述查詢的SolrQuery對象,然后您將返回QueryResponse(從org.apache.solr.client.solrj.response包中)。

SolrQuery有一些方法可以方便地添加參數(shù)來選擇請求處理程序并向其發(fā)送參數(shù)。這是一個非常簡單的例子,它使用默認的請求處理程序并設置查詢字符串:

SolrQuery query = new SolrQuery();
query.setQuery(mQueryString);

要選擇不同的請求處理程序,SolrJ 4.0及更高版本中提供了一個特定的方法:

query.setRequestHandler("/spellCheckCompRH");

您也可以在查詢對象上設置任意參數(shù)。下面的前兩行代碼相互等價,第三行顯示如何使用任意參數(shù)q來設置查詢字符串:

query.set("fl", "category,title,price");
query.setFields("category", "title", "price");
query.set("q", "category:books");

完成SolrQuery設置后,請將其提交給query():

QueryResponse response = solr.query(query);

客戶端建立網(wǎng)絡連接并發(fā)送查詢。Solr處理查詢,并將響應發(fā)送并解析為一個QueryResponse。

QueryResponse是一組滿足查詢參數(shù)的文檔。您可以使用 getResults () 直接檢索文檔,并且您可以調用其他方法來查找有關突出顯示或facet的信息。

SolrDocumentList list = response.getResults();

索引文件

其他操作也很簡單。如果要索引(補充)的文件,所有你需要做的就是創(chuàng)建一個SolrInputDocument并將其傳遞到SolrClient的add()方法。這個例子假定已經(jīng)根據(jù)前面的例子創(chuàng)建了一個名為'solr'的SolrClient對象。

SolrInputDocument document = new SolrInputDocument();
document.addField("id", "552199");
document.addField("name", "Gouda cheese wheel");
document.addField("price", "49.99");
UpdateResponse response = solr.add(document);

// Remember to commit your changes!

solr.commit();

以XML或二進制格式上傳內容

SolrJ允許您以二進制格式上傳內容,而不是默認的XML格式。使用以下代碼以二進制格式上傳,這與SolrJ用于獲取結果的格式相同。如果您嘗試混合Solr和SolrJ版本,其中一個版本是1.x,另一個是3.x或更高版本,那么您必須使用XML請求編寫器。二進制格式在3.x中改變,兩個javabin版本完全不兼容。

solr.setRequestWriter(new BinaryRequestWriter());

使用ConcurrentUpdateSolrClient

當實現(xiàn)一次性批量加載大量文檔的Java應用程序時,可以考慮ConcurrentUpdateSolrClient替代使用HttpSolrClient。該ConcurrentUpdateSolrClient緩存所有添加的文檔,并將其寫入到打開的HTTP連接。這個類是線程安全的。盡管任何SolrClient請求都可以用這個實現(xiàn)來完成,但是建議只對ConcurrentUpdateSolrClientfor 使用/update請求。

EmbeddedSolrServer

本EmbeddedSolrServer類提供SolrClient客戶端API的實現(xiàn),它直接與在您的 Java 應用程序中直接運行的 Solr 的微實例進行對話。這種嵌入式方法在大多數(shù)情況下不被推薦,并且在它所支持的一組功能上相當有限 - 特別是它不能與SolrCloud或索引復制一起使用。EmbeddedSolrServer的存在主要是為了幫助促進測試。

有關如何使用EmbeddedSolrServer的信息,請查看Solr源代碼版本的org.apache.solr.client.solrj.embedded包中的SolrJ JUnit測試。

以上內容是否對您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號
微信公眾號

編程獅公眾號