Short answer - JOINs, external query outside Solr, Elastic Search ;) Alternatives: * You get back an id for each document when you query on "Nino". You look up the last names in some other system that has the full list. * You index the authors in another collection and use JOINs * You store the author_array as formatted, escaped JSON, stored, but not indexed (or analyzed). When you get the data back, you navigate the JSON to the author_array, get the value, and parse that value as JSON. Now you have the full list. * This is a sweet spot for Elastic Search, to be perfectly honest.
-----Original Message----- From: Bastien Latard - MDPI AG [mailto:lat...@mdpi.com.INVALID] Sent: Friday, April 15, 2016 7:52 AM To: solr-user@lucene.apache.org Subject: Can a field be an array of fields? Hi everybody! /I described a bit what I found in another thread, but I prefer to create a new thread for this specific question.../ *It's **possible to create an array of string by doing (incomplete example): - in the data-conf.xml:* <entity name="solr_articles" query="select title, abstract from articles"> <entity name="authors_array" query="select given_name, last_name from authors WHERE article_id='${solr_articles.id}'"> <field column="title" name="title" /> <field column="abstract" name="abstract" /> <field column="given_name" name="given_name" /> <field column="last_name" name="last_name" /> </entity> </entity> *- in schema.xml: *<field name="title" type="string" indexed="false" stored="true" required="false" multiValued="true" /> <field name="abstract" type="string" indexed="false" stored="true" required="false" multiValued="true" /> <field name="given_name" type="string" indexed="false" stored="true" required="false" multiValued="true" /> <field name="last_name" type="string" indexed="false" stored="true" required="false" multiValued="true" /> And this provides something like: "docs":[ { [...] "given_name":["Bastien", "Matthieu", "Nino"], "last_name":["lastname1", "lastname2", "lastname3", "lastname4"], [...] *Note: there can be one author with only a last_name, and then we are unable to tell which one it is...* My goal would be to get this as a result: "docs":[ { [...] "authors_array": [ [ "given_name":["Bastien"], "last_name":["lastname1"] ], [ "last_name":["lastname2"] ], [ "given_name":["Matthieu"], "last_name":["lastname2"] ], [ "given_name":["Nino"], "last_name":["lastname4"] ], ] [...] Is there any way to do this? /PS: I know that I could do '//select if(a.given_name is not null, a.given_name ,'') as given_name, [...]//' but I would like to get an array.../ I tried to add something like that to the schema.xml, but this doesn't work (well, it might be of type 'array'): <field name="authors_array" type="string" indexed="true" stored="true" required="false" multiValued="true"/> Kind regards, Bastien Latard Web engineer -- MDPI AG Postfach, CH-4005 Basel, Switzerland Office: Klybeckstrasse 64, CH-4057 Tel. +41 61 683 77 35 Fax: +41 61 302 89 18 E-mail: lat...@mdpi.com http://www.mdpi.com/