如何查詢所有(或前綴)字段名稱的solr實例?Solr:從solr索引中檢索字段名稱?
我想用動態的領域,如
category_0_s
category_1_s
...
,但我不知道有多少可能存在。所以我想檢索所有的字段(最好使用前綴「category_」)。
任何想法?由於
如何查詢所有(或前綴)字段名稱的solr實例?Solr:從solr索引中檢索字段名稱?
我想用動態的領域,如
category_0_s
category_1_s
...
,但我不知道有多少可能存在。所以我想檢索所有的字段(最好使用前綴「category_」)。
任何想法?由於
使用盧克處理程序:
http://solr:8983/solr/admin/luke?numTerms=0
使用XPath來獲取所有具有標籤DYNAMICBASE匹配您正在尋找的動態字段定義字段。
如果您需要從Java應用程序執行此操作,則可以使用Solrj和LukeRequestRequestHandler。
你的代碼看起來像這樣。
LukeRequest lukeRequest = new LukeRequest();
lukeRequest.setNumTerms(0);
LukeResponse lukeResponse = lukeRequest.process(server);
Map<String, FieldInfo> fieldInfoMap = lukeResponse.getFieldInfo();
for (Entry<String, FieldInfo> entry : fieldInfoMap.entrySet()) {
String fieldName = entry.getKey();
FieldInfo fieldInfo = entry.getValue();
// process fieldInfo
}
該查詢將返回所有正在使用的字段(包括動態字段)的逗號分隔列表。
select?q=*:*&wt=csv&rows=0&facet
要回答原來的問題,這就是如何讓所有的字段列表開始category_
select?q=*:*&wt=csv&rows=0&facet&fl=category_*
作出較新版本的這個查詢工作所需的facet
參數的存在Solr。在舊版本中,它將在沒有它的情況下工作。
在舊版本中,fl
參數中的通配符不起作用。
在Solr5中,包括'facet'和'facet.field'會導致400錯誤請求,但仍包含這些字段。離開'facet.field'返回字段和200成功 – Izkata 2015-04-20 19:54:08
@Izkata感謝您的改進!我已經更新了我的答案。奇怪的是,設置'facet = true'不起作用,但是'facet'沒有任何值。 – GoalBased 2015-04-21 03:11:21
在Solr 6.3上,只有fl = id,category ...沒有facet = on。我想知道如果我仍然需要在架構中添加一些東西來顯示其他信息 – gadelkareem 2016-12-13 20:24:07
是的!而已。謝謝。 – floplus 2010-07-09 13:02:59
@Philippe不會得到所有正在使用的動態字段的名稱,這是原始海報要求的名稱。仔細閱讀問題和答案。 – GoalBased 2015-04-04 14:39:58
@GoalBased好吧,但如果不是批評你給出了更好的解決方案,那也會有幫助。所以要更新我的「答案」,正確調用動態字段是http:// host:/solr/collection/schema/dynamicfields。有關更多選項,請參閱https://cwiki.apache.org/confluence/display/solr/Schema+API –
Philippe
2015-04-04 14:51:02