我如何查询Solr实例中所有(或以指定前缀开头的)字段名呢?
我想要使用动态字段,而我不知道可能有多少个,例如:category_0_s
,category_1_s
等。
最好能够使用前缀,例如:category_
我如何查询Solr实例中所有(或以指定前缀开头的)字段名呢?
我想要使用动态字段,而我不知道可能有多少个,例如:category_0_s
,category_1_s
等。
最好能够使用前缀,例如:category_
这个查询将返回一个逗号分隔的列表,其中包括所有正在使用的字段,包括动态字段。
select?q=*:*&wt=csv&rows=0&facet
回答原问题,以下是如何获取以 category_ 开头的所有字段的列表。select?q=*:*&wt=csv&rows=0&facet&fl=category_*
在较新版本的Solr上,需要使用facet
参数使此查询起作用。 在旧版本上,没有该参数也可以工作。
在旧版本中,fl
参数中的通配符将无法正常工作。
使用卢克处理器:
http://solr:8983/solr/admin/luke?numTerms=0
使用xpath获取所有具有dynamicBase标记的字段,以匹配您正在查找的动态字段定义。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
}
facet
是从哪里来的? - tar
facet
和facet.field
会导致400 Bad Request错误,但仍然包括字段。省略facet.field
将返回字段和200 Success。 - Izkatafacet=true
不起作用,但是没有值的facet
起作用。 - GoalBased