すべての(または接頭辞付きの)フィールド名についてSolrインスタンスにクエリを実行するにはどうすればよいですか?
次のような動的フィールドを使用したい
category_0_s
category_1_s
...
しかし、いくつ存在するのかわかりません。したがって、すべてのフィールドを取得したいと思います(できれば接頭辞「category_」を付けて)。
何か案は?ありがとう
ルークハンドラーを使用します。
http://solr:8983/solr/admin/luke?numTerms=0
Xpathを使用して、探している動的フィールド定義に一致するタグdynamicBaseを持つすべてのフィールドを取得します。
このクエリは、動的フィールドを含む、使用中のすべてのフィールドのコンマ区切りのリストを返します。
select?q=*:*&wt=csv&rows=0&facet
元の質問に答えるために、これはcategory_で始まるすべてのフィールドのリストを取得する方法です
select?q=*:*&wt=csv&rows=0&facet&fl=category_*
このクエリを新しいバージョンのSolrで機能させるには、facet
パラメーターの存在が必要です。古いバージョンでは、それがなくても動作します。
古いバージョンでは、fl
パラメーターのワイルドカードは機能しません。
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
}