2009-04-27 11 views
5

Hola a todos,SolrJ consulta

tengo que consultar varios valores en contra de un índice (al igual que un (ID1, ID2, ID3) consulta SQL en) usando SolrJ, en otras palabras, quiero recuperar documentos cuyo campo coincide con un conjunto de valores.

Como SolrJ API es áspera documentado que espero que alguien me podría ayudar

Saludos

Respuesta

6

Se podría hacer algo como:

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 , es mi culpa que no he explicado bien la pregunta. Lo que quiero hacer es poner en práctica misma funcionalidad evitando O - O O .. (? Solr la consulta no está implementarlo) THX – Lici

+0

ver editado mi respuesta, me acaba de agregar otra solución –

+0

Voy a tratar . Espero que funcione con una consulta de filtro ... – Lici

0

En el esquema archivo de definición conf/schema.xml puede especificar el operador predeterminado, asegúrese de que sea un OR:

<solrQueryParser defaultOperator="OR"/> 

A continuación, puede separar las palabras por espacios en su consulta y esto dará lugar a un OR de las palabras:

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

Ten en cuenta que no se recomienda confiar en esta configuración, ya que es siendo considerado por desaprobación: http://wiki.apache.org/solr/SchemaXml#line-118 – oksayt

0

he intentado y en Solr 5 éste parece funcionar así:

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

buen día,

Se podría hacer eso por 2 vías

1- Usando O como separador entre los valores que podemos utilizar StringUtils para que sea más fácil de verificación debajo

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

2-Uso de SPACE como separador entre los valores de verificación a continuación

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