簡體   English   中英

通過外部字段進行SOLR搜索

[英]SOLR search by external fields

我們需要的內容與此處討論的內容類似,除了不是作為過濾器而是作為實際查詢: http : //lucene.472066.n3.nabble.com/filter-query-from-external-list-of-Solr- unique-IDs-td1709060.html

我們想實現一個查詢分析器/得分手,使我們對SOLR搜索與搜索外場結合起來。 這是由於有更新,即使需要更新只在文件中的字段整個文檔的限制。

例如,我們有一個名為包含兩列document_attributes數據庫表DOCUMENT_ID,attribute_id。 document_id對應於索引為SOLR的文檔的ID。

我們希望能夠傳遞如下查詢:

attribute_id:123 OR text:some_query(attribute_id:123 OR attribute_id:456)AND text:some_query等...

我們能否在SOLR中實現一個插件/模塊,該插件/模塊能夠解析上述查詢,然后獲取與attribute_id相關聯的document_id,並將結果與​​SOLR搜索的常規處理結合起來,以返回整個查詢的一組結果。

我們將不勝感激關於如何實現這一點,如果有可能的任何指導。

我會重復提出問題的建議,並附帶條件。

對於Solr <4.0,要考慮的兩種方法是:

  • 在查詢solr之前進行DocumentID查找,並使用文檔ID列表查詢solr(例如fq=(docid:1 OR docid:5)

  • 創建自己的派生SolrQueryParser ,執行數據庫查詢以用文檔ID替換屬性ID(eq fq=attribute:1由queryparser擴展為fq=(docid:1 OR docid:5)

該決定應圍繞您將發送給Solr的文檔ID數而定。 對於小型的或事件適度的(例如數百個)文檔ID,則將ID作為filterQuery發送可能是最好的方法。 如果您可能發送大量或非常大量的Documentid,那么針對您的案例擴展queryparser是一個合理的策略。 如果擴展查詢解析器,則可能需要考慮在專用(非默認)請求處理程序上運行它,並在諸如緩存等方面進行構建,以確保結果保持高性能。

對於Solr 4.0及更高版本,您還可以考慮使用跨核心聯接 您可以將現有的Solr核心保持原樣,並創建一個新的核心以對文檔進行索引:屬性關系。 這應該可以減輕您對整個文檔更新的擔憂,並允許您在內存中的Solr中執行整個查詢。

暫無
暫無

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

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