2012-09-30 41 views

Respuesta

41

This comment dice que es posible mediante el uso de:.?

{!join from=fromField to=toField fromIndex=fromCoreName}fromQuery 

lo probé a mí mismo, y esto es una forma más ejemplo detallado: Tener dos núcleos

  • marcas {id, nombre}
  • productos {id, nombre, brand_id}

MARCAS: {1, de Apple}, {2, Samsung}, { 3, HTC}

PRODUCTOS: {1, iPhone, 1}, {2, iPad 1}, {3, Galaxy S3, 2}, {4, Galaxy Note, 2}, {5, Uno X, 3}

http://example.com:8999/solr/brands/select?q=*:* & fq = {nombre de unirse a brand_id = = = id fromIndex productos!}: IPad

Esto se traduce en algo como:

SELECT b.* FROM brands b 
     INNER JOIN products p ON b.id=p.brand_id 
     WHERE p.name="iPad"; 

resultado será: {id: "1", nombre: "Apple"}

+3

Thx por el ejemplo agradable. Más precisamente, el equivalente SQL es 'SELECT b. * FROM brands b INNER JOIN products p ON b.id = p.brand_id WHERE p.name =" iPad ";' ya que Solr no puede dar los campos de fromCore: - ( – arun

+1

Sí, eso es tristemente correcto. Edité mi ejemplo. – mjalajel

+0

La consulta no es válida, debería ser: 'q = nombre: iPad & fq = {! Join from = brand_id to = id fromIndex = products}' o 'q = * : * & fq = {! join from = brand_id to = id fromIndex = productos} nombre: iPad'. 'q =:' no es válido. – zengr

Cuestiones relacionadas