Solr:从solr索引中检索字段名称?

时间:2010-07-09 08:47:28

标签: solr

如何查询所有(或前缀)字段名称的solr实例?

我想使用像

这样的动态字段
category_0_s
category_1_s
...

但我不知道可能存在多少。所以我想检索所有字段(最好使用前缀“category _”)。

任何想法?感谢

3 个答案:

答案 0 :(得分:32)

此查询将返回以逗号分隔的列表,其中包含正在使用的所有字段,包括动态字段。

select?q=*:*&wt=csv&rows=0&facet

要回答原始问题,这是如何获取以类别_

开头的所有字段的列表
select?q=*:*&wt=csv&rows=0&facet&fl=category_*

需要使用facet参数才能使此查询在较新版本的Solr上运行。在旧版本中,它可以在没有它的情况下工作。

在旧版本中,fl参数中的通配符无法正常工作。

答案 1 :(得分:21)

使用luke处理程序:

http://solr:8983/solr/admin/luke?numTerms=0

使用xpath获取标签dynamicBase与您要查找的动态字段定义匹配的所有字段。

答案 2 :(得分:1)

如果您需要从Java应用程序执行此操作,可以使用SolrjLukeRequestRequestHandler

您的代码看起来像这样。

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    
}