如何查询所有(或前缀)字段名称的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