instalar - Solr/Lucene: obtenga todos los nombres de campo ordenados por el número de ocurrencias en el índice
instalar solr (1)
Como se indica en Solr: Recuperar nombres de campo de un índice de solr? puedes hacer esto usando LukeRequesthandler.
Para hacerlo, debe habilitar requestHandler en su solrconfig.xml
<requestHandler name="/admin/luke" class="org.apache.solr.handler.admin.LukeRequestHandler" />
y llámalo
http://solr:8983/solr/admin/luke?numTerms=0
Si desea ordenar los campos por algo, debe hacerlo por su cuenta. Sugeriría usar Solrj en caso de que estés en un entorno Java.
Obtener campos usando Solrj
@Test
public void lukeRequest() throws SolrServerException, IOException {
SolrServer solrServer = new HttpSolrServer("http://solr:8983/solr");
LukeRequest lukeRequest = new LukeRequest();
lukeRequest.setNumTerms(1);
LukeResponse lukeResponse = lukeRequest.process(solrServer );
List<FieldInfo> sorted = new ArrayList<FieldInfo>(lukeResponse.getFieldInfo().values());
Collections.sort(sorted, new FieldInfoComparator());
for (FieldInfo infoEntry : sorted) {
System.out.println("name: " + infoEntry.getName());
System.out.println("docs: " + infoEntry.getDocs());
}
}
El comparador utilizado en el ejemplo
public class FieldInfoComparator implements Comparator<FieldInfo> {
@Override
public int compare(FieldInfo fieldInfo1, FieldInfo fieldInfo2) {
if (fieldInfo1.getDocs() > fieldInfo2.getDocs()) {
return -1;
}
if (fieldInfo1.getDocs() < fieldInfo2.getDocs()) {
return 1;
}
return fieldInfo1.getName().compareTo(fieldInfo2.getName());
}
}
Quiero obtener la lista de todos los campos (es decir, los nombres de los campos) ordenados por el número de veces que aparecen en el índice de Solr, es decir: el campo que se produce con más frecuencia, el segundo campo más frecuente y así sucesivamente.
Alternativamente, obtener todos los campos en el índice y el número de veces que ocurren también sería suficiente.
¿Cómo puedo lograr esto ya sea con una sola consulta de solr o mediante solr / lucene API de Java?
El conjunto de campos no es fijo y tiene un rango de cientos. Casi todos los campos son dinámicos, a excepción de la identificación y tal vez un par más.