当前位置:网站首页>SOLR Advanced Query Application - - Grouper les requêtes par champ

SOLR Advanced Query Application - - Grouper les requêtes par champ

2022-06-10 09:24:00 Yangyang Vv

Un.:solrInadminÉcrire l'instruction de requête de l'interface de gestion:
Insérer la description de l'image ici
2.:GROPUParamètres
Insérer la description de l'image ici
Trois:GroupÀ propos de FacetLimitParamètres:
Si ce n'est pas réglélimitEt si,La valeur par défaut renvoie Max100

//Juste pour toi.sorlqueryPlus cette façade est limitée à-1,Il n'y a pas de limite à la quantité.
SolrQuery queryArgs = new SolrQuery();
queryArgs.setFacetLimit(-1);

Quatre:javaRequêtesolrCodage de groupe:

package com.dss.solr.test;

import java.util.List;

import org.apache.solr.client.solrj.SolrQuery;
import org.apache.solr.client.solrj.SolrRequest;
import org.apache.solr.client.solrj.impl.HttpSolrClient;
import org.apache.solr.client.solrj.response.Group;
import org.apache.solr.client.solrj.response.GroupCommand;
import org.apache.solr.client.solrj.response.GroupResponse;
import org.apache.solr.client.solrj.response.QueryResponse;
import org.apache.solr.common.SolrDocument;
import org.apache.solr.common.SolrDocumentList;
import org.apache.solr.common.params.CommonParams;
import org.apache.solr.common.params.GroupParams;

import com.dss.solr.server.SolrServer;

public class SolrGroupTest {
    

	public static void queryGroup() throws Exception{
    
		HttpSolrClient client = SolrServer.getSolrClient();
		
		SolrQuery sQuery = new SolrQuery();
		// Activer la fonction de regroupement 
		sQuery.setParam(GroupParams.GROUP, true);
		
		// Définir pour effectuer groupGroupefield, Si plusieurs FieldGroupe, Définir plusieurs Field,Comme suit 
		sQuery.setParam(GroupParams.GROUP_FIELD, "brand_s");
		//sQuery.setParam(GroupParams.GROUP_FIELD, "brand_s","subMajor_s");
		
		// Définir le nombre maximum d'enregistrements retournés par groupe (Par défaut1), Si seulement le nombre de groupes est requis ,Peut être réglé à0
		sQuery.setParam(GroupParams.GROUP_LIMIT, "5");
		
		// Définissez le nombre de données retournées dans chaque groupe à partir de (Par défaut0),CollocationGroupParams.GROUP_LIMIT La pagination intragroupe est possible 
		sQuery.setParam(GroupParams.GROUP_OFFSET, "0");
		
		// Renvoie le nombre total de groupes 
		sQuery.setParam(GroupParams.GROUP_TOTAL_COUNT, true);
		
		// Configuration intragroupe FieldTrier
		sQuery.setParam(GroupParams.GROUP_SORT, "id desc");
		
		//Configuration des composantsFieldTrier
		sQuery.setParam(CommonParams.SORT, "id desc");
		
		//Solr Par défaut, chaque requête est pagée :startPour0,rowsPour10. C'est - à - dire retourner les dix premiers enregistrements . Dans de nombreux cas, ce résultat est suffisant , Si les exigences opérationnelles ne sont pas respectées , Vous devez afficher les paramètres de pagination spécifiés .
		//Ici.startEtrows Pagination des composants utilisateurs , C'est - à - dire combien de groupes de données sont affichés à la fois 
		sQuery.setStart(0);
		//Ici.rows Définit le nombre de données retournées par page , Si vous voulez retourner tout en même temps ,Peut être réglé directementInteger.MAX_VALUE
		sQuery.setRows(10);
		
		// Vous pouvez définir ce que vous voulez retourner Field
		sQuery.setParam(CommonParams.FL, "id,title_s,brand_s,subMajor_s");
		
		sQuery.setQuery("*:*");
		
		QueryResponse queryResponse = client.query(sQuery, SolrRequest.METHOD.POST);
		GroupResponse groupResponse = queryResponse.getGroupResponse();
		if(groupResponse != null) {
    
			/** * Réglage de plusieursFieldGroupe,Etvalues.sizeC'est combien? */
			List<GroupCommand> values = groupResponse.getValues();
			if(values != null) {
    
				System.out.println("values.size()======" + values.size());
				for(GroupCommand value : values) {
    
					/** * value.getName()== Actuellement groupé FieldNom de * value.getNGroups()== Actuellement groupé Field Nombre total de groupes pour  */
					System.out.println(value.getName() + "=======" + value.getNGroups());
					List<Group> groups = value.getValues();
					if(groups != null) {
    
						for(Group group : groups) {
    
							System.out.println(group.getGroupValue());
							System.out.println("=======");
							
							/** * group.getResult() Indique le nombre d'enregistrements de données pour le Groupe actuel , Si elle est configurée ci - dessus  GroupParams.GROUP_LIMIT==0,Oui.null */
							SolrDocumentList result = group.getResult();
							System.out.println("resultNumFound=====" + result.getNumFound());
							if(result != null) {
    
								for(SolrDocument item : result) {
    
									/** * itemC'estsolr Données pour chaque index dans  */
									System.out.println(item);
								}
							}
						}
					}
				}
			}
		}
	}
	public static void main(String[] args) throws Exception {
    
		queryGroup();
	}
}

Vous pouvez également obtenir queryResponse.getGroupResponse() Passer ensuite à la méthode suivante pour effectuer une analyse des données :
Insérer la description de l'image ici
Convertir enJSONArrayTraitement des données,size Est le nombre total de données de ce groupe .

原网站

版权声明
本文为[Yangyang Vv]所创,转载请带上原文链接,感谢
https://yzsam.com/2022/06/202206100922304876.html