簡體   English   中英

用Solr索引外部rest api,可能嗎?

[英]Indexing external rest api with solr, possible?

這個問題也許很奇怪,但是我的老板要求我找出答案,因此我會。

在我們的應用程序中,我們使用外部REST api搜索一些數據。 該REST API可以提供多種類型的數據,但一次只能查找一種類型的數據。 例如城市名稱和街道名稱。 在我們的應用程序中,我們強迫用戶選擇搜索時要查找的數據類型,但是現在我們的用戶不想這樣做。 因此,如果他們搜索“ los”,則希望結果包含“ Los Angeles”和“ Losing Street”。 為了使現在可行,我們將不得不在REST API中進行兩個單獨的搜索並將結果合並。

因此,我的老板改為閱讀了Solr,並堅信可以為REST API編制索引,以便我們使用Solr在一個搜索請求中搜索所需的內容。 我不太確定。 有可能嗎?是否可行?

是的,絕對可以為上述需求提供解決方案。 基本上,solr是全文搜索引擎,默認情況下,所有字段都在solr中建立索引。 一個人可以通過分析器和標記器組合在這些字段上執行不同類型的操作。 您可以將所有可搜索字段映射到一個特定字段(稱為復制字段,即城市名稱和街道名稱->文本名稱),然后在該字段上進行搜索以根據需要獲取結果。

solr是RESTful搜索引擎,它以xml和可選JSON格式提供數據。 它真正有用的平台可處理海量數據,無助於計算等分析部分。

這些好處很少包括自動建議,突出顯示,構面,同義詞搜索,n-gram搜索,自動更正等。

我認為您應該向REST API維護者發送功能請求,以支持組合搜索。

您唯一要做的就是從REST API下載整個數據庫,並創建一個自己的數據庫,然后您可以使用自定義查詢對它進行索引和搜索,並且必須與REST API保持同步。 我想你不想那樣做。 它將起作用,但是所謂的REST API通常不會通過鏈接和語義注釋使客戶端與服務的實現脫鈎。 因此,恐怕API的任何更改都會輕易破壞它。

Afaik Solr是一種存儲解決方案,它支持全文搜索並具有REST界面。

Solr是具有REST類API的獨立企業搜索服務器。 您可以通過XML,JSON,CSV或HTTP二進制文件將文檔放入其中(稱為“索引編制”)。 您可以通過HTTP GET查詢它,並接收XML,JSON,CSV或二進制結果。

實際擁有數據后,您就可以使用數據導入處理程序(DIH),Solr的RESTful接口或類似Spring Data Solr之類的功能將數據從REST API發布到Solr。 棘手的部分是如何“抓取”第三方REST API數據?

根據REST API提供程序是否提供任何方式對數據進行分頁(即按時間順序或按字母順序),您可能能夠在Solr外部編寫一個程序來輪詢REST API,然后在將數據發布到本地之前將其存儲在本地數據庫中Solr。 如果REST API提供程序允許您檢索在一定時間后更新的新記錄或更改記錄,則這樣做會更容易,這樣您的輪詢將非常有效,並且僅在初始完全索引后才檢索少量數據。 某些REST提供程序允許使用Webhooks來通知您的應用程序他們已更新其API中的數據。 根據數據量以及是否可以通過用戶帳戶限制它等以僅包含所需內容,這可能可行或不可行。

將第三方數據存儲在Solr以外的本地數據庫中非常重要,因為Solr的索引數據文件易失,有時在進行配置更改后需要將其刪除。 這樣,您可以編寫一個過程來將數據從數據庫重新發布到Solr,而無需再次爬網REST API。

為了定期處理輪詢,可以使用諸如Apache Camel或Spring Integration以及Quartz Scheduler之類的工具。 這兩個都支持REST端點,您還可以查看Solr隨附的DIH示例。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM