2009-04-27 11 views
5

Ciao a tutti,SolrJ Query

devo interrogare i valori multipli contro un indice (proprio come una IN (ID1, ID2, ID3) query SQL) utilizzando SolrJ, in altre parole, voglio recuperare documenti che campo corrisponde a un insieme di valori.

Come solrj API è ruvida documentato mi aspetto che qualcuno mi può aiutare

saluti

risposta

6

Si potrebbe fare qualcosa di simile:

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

o:

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

riggt , è colpa mia se non ho spiegato bene la domanda. Quello che voglio fare è implementare stessa funzionalità evitando O - O .. o (? La query solr non è attuarlo) thx – Lici

+0

Vedere la mia risposta a cura, ho appena aggiunto un'altra soluzione –

+0

Cercherò . Spero che funzioni con una query di filtro ... – Lici

0

Nello schema definizione file conf/schema.xml è possibile specificare l'operatore predefinito, assicurarsi che sia OR:

<solrQueryParser defaultOperator="OR"/> 

Quindi è possibile separare le parole di spazi nella vostra interrogazione e questo porterà ad un OR delle parole:

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

Si noti che non è consigliabile fare affidamento su questa impostazione in quanto è essere considerato per la deprecazione: http://wiki.apache.org/solr/SchemaXml#line-118 – oksayt

0

ho provato e in Solr 5 questo sembra funzionare bene:

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

Good Day,

Si potrebbe fare che da 2 vie

1- Uso O come separatore tra i valori possiamo usare StringUtils per rendere più facile controllo sotto

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

2-Uso SPACE come separatore tra i valori di controllo sotto

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