2009-04-27 4 views
5
tout le monde

Hallo,SolrJ Recherche

je dois interroger plusieurs valeurs contre un indice (comme un IN (ID1, ID2, id3) requête SQL) utilisant SolrJ, autrement dit je veux récupérer docs qui champ correspond à un ensemble de valeurs.

Comme solrj api est rude documenté je pense que quelqu'un pourrait me aider

Cordialement

Répondre

6

Vous pouvez faire quelque chose comme:

SolrQuery solrQuery = new SolrQuery().setQuery("myField:id1 OR myField:id2 OR myField:id3"); 
QueryResponse rsp = server.query(solrQuery); 

ou:

SolrQuery solrQuery = new SolrQuery().setQuery("myField:(id1 OR id2 OR id3)"); 
QueryResponse rsp = server.query(solrQuery); 
+0

riggt , c'est de ma faute je n'ai pas bien expliqué la question. Ce que je veux faire est de mettre en œuvre même fonctionnalité éviter - OU .. OU (? La requête Solr est pas mise en œuvre) thx – Lici

+0

voir ma réponse modifiée, Je viens d'ajouter une autre solution –

+0

Je vais essayer . Espérons que cela fonctionne avec une requête de filtre ... – Lici

0

Dans le schéma fichier de définition conf/schema.xml vous pouvez spécifier l'opérateur par défaut, assurez-vous qu'il est un OU:

<solrQueryParser defaultOperator="OR"/> 

Ensuite, vous pouvez séparer les mots par des espaces dans votre requête et cela conduira à un OU des mots:

solrQuery.setQuery("myField:(id1 id2 id3)") 
+3

Notez qu'il n'est pas recommandé de s'appuyer sur ce paramètre car il est en cours d'examen pour la dépréciation: http://wiki.apache.org/solr/SchemaXml#line-118 – oksayt

0

Je l'ai essayé et Solr 5 celui-ci semble fonctionner bien:

String mQueryString="term:business OR term:\"information security\""; 
SolrQuery query = new SolrQuery(); 
query.setQuery(mQueryString); 
0

Good Day,

Vous pouvez le faire en 2 voies

1- En utilisant OU comme séparateur entre les valeurs que nous pouvons utiliser StringUtils pour faciliter l'enregistrement ci-dessous

Set<String> pdfFamilies = new HashSet<String>(); 
String familyIdsString = StringUtils.join(pdfFamilies , 'OR'); 
solrQuery = new SolrQuery("FAM_ID: (" + familyIdsString + ")"); 

2-Utiliser SPACE comme séparateur entre les valeurs ci-dessous vérifier

Set<String> pdfFamilies = new HashSet<String>(); 
String familyIdsString = StringUtils.join(pdfFamilies , ' '); 
solrQuery = new SolrQuery("FAM_ID: (" + familyIdsString + ")");