Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/solr/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Solr/Lucene:按索引中出现的次数对所有字段名进行排序_Solr_Lucene_Indexing - Fatal编程技术网

Solr/Lucene:按索引中出现的次数对所有字段名进行排序

Solr/Lucene:按索引中出现的次数对所有字段名进行排序,solr,lucene,indexing,Solr,Lucene,Indexing,我想获得所有字段的列表(即字段名),这些字段在Solr索引中出现的次数排序,即:最频繁出现的字段、第二频繁出现的字段等等 或者,获取索引中的所有字段以及它们出现的次数也就足够了 我如何通过单个solr查询或通过solr/lucenejavaapi来实现这一点 字段集不是固定的,范围为数百个。几乎所有的字段都是动态的,除了id,可能还有更多的字段。如中所述,您可以使用LukeRequesthandler来实现这一点 为此,您需要在solrconfig.xml中启用requestHandler

我想获得所有字段的列表(即字段名),这些字段在Solr索引中出现的次数排序,即:最频繁出现的字段、第二频繁出现的字段等等

或者,获取索引中的所有字段以及它们出现的次数也就足够了

我如何通过单个solr查询或通过solr/lucenejavaapi来实现这一点

字段集不是固定的,范围为数百个。几乎所有的字段都是动态的,除了id,可能还有更多的字段。

如中所述,您可以使用LukeRequesthandler来实现这一点

为此,您需要在solrconfig.xml中启用requestHandler


叫它

http://solr:8983/solr/admin/luke?numTerms=0
如果您想按某些内容对字段进行排序,则需要您自己进行排序。我建议在java环境中使用Solrj

使用Solrj获取字段

@测试
public void lukeRequest()引发SolrServerException,IOException{
SolrServer SolrServer=新的HttpSolrServer(“http://solr:8983/solr");
LukeRequest LukeRequest=新的LukeRequest();
lukeRequest.setNumTerms(1);
LukeResponse LukeResponse=lukeRequest.process(solrServer);
列表排序=新的数组列表(lukeResponse.getFieldInfo().values());
Collections.sort(sorted,newfieldinfocomparator());
for(FieldInfo信息条目:已排序){
System.out.println(“name:+infoEntry.getName());
System.out.println(“docs:+infoEntry.getDocs());
}
}
示例中使用的比较器

公共类FieldInfoComparator实现Comparator{
@凌驾
公共整数比较(FieldInfo fieldInfo1、FieldInfo fieldInfo2){
if(fieldInfo1.getDocs()>fieldInfo2.getDocs()){
返回-1;
}
if(fieldInfo1.getDocs()
如中所述,您可以使用LukeRequesthandler执行此操作

为此,您需要在solrconfig.xml中启用requestHandler


叫它

http://solr:8983/solr/admin/luke?numTerms=0
如果您想按某些内容对字段进行排序,则需要您自己进行排序。我建议在java环境中使用Solrj

使用Solrj获取字段

@测试
public void lukeRequest()引发SolrServerException,IOException{
SolrServer SolrServer=新的HttpSolrServer(“http://solr:8983/solr");
LukeRequest LukeRequest=新的LukeRequest();
lukeRequest.setNumTerms(1);
LukeResponse LukeResponse=lukeRequest.process(solrServer);
列表排序=新的数组列表(lukeResponse.getFieldInfo().values());
Collections.sort(sorted,newfieldinfocomparator());
for(FieldInfo信息条目:已排序){
System.out.println(“name:+infoEntry.getName());
System.out.println(“docs:+infoEntry.getDocs());
}
}
示例中使用的比较器

公共类FieldInfoComparator实现Comparator{
@凌驾
公共整数比较(FieldInfo fieldInfo1、FieldInfo fieldInfo2){
if(fieldInfo1.getDocs()>fieldInfo2.getDocs()){
返回-1;
}
if(fieldInfo1.getDocs()
您所说的它们出现的次数是什么意思?这可以用许多不同的方式来解释。你所说的它们出现的次数是什么意思?这可以用多种不同的方式来解释。