2014-04-24 27 views
8

我需要找到我的集合,它一定字段的長度超過一定限度的所有文件。該字段的類型是字符串。有沒有函數查詢返回Solr中字符串字段的長度?字符串長度功能查詢Solr中

回答

24

的解決方案是使用Solr的正則表達式的能力。例如,下面的查詢檢索所有其title場至少42文件:

title:/.{42}.*/ 
+0

我有一個文檔誰是「描述」字段是292個字符和28個字(集合中的最大描述),但不知何故,當我查詢'description:/。{71}。* /'有0個結果,並且查詢'描述:/。{70}。* /'確實返回我的文檔...我錯過了什麼? –

+0

@joey,該字段的類型是什麼? – snakile

+0

org.apache.solr.schema.TextField –

2

由長度查詢不支持開箱即用,最明智的辦法就是通過這個字段創建一個單獨的(數字)字段和查詢。

+0

所以我不得不改變我的架構才能做到這一點?這是我需要做的一件事。確定長度字段然後將其丟棄是最好的方法嗎? – snakile

+2

如果它是一個一次性的事情,你可以[遍歷所有文件(http://stackoverflow.com/questions/5051460/solr-solrj-how-to-iterate-results-without-creating-a-giant- arraylist)並手動進行處理。 – mindas

+0

+1,因爲您的解決方案可以工作並且完全正常,但我想我已經想出了一個更簡單的解決方案。看我的帖子。 – snakile