Hi Christopher, if you model your documents with a nested document approach ( like the one you mentioned) you should be able to achieve your requirement following this interesting blog [1] :
*" ToParentBlockJoinQuery supports several score calculation modes. For example, a score for a parent could be calculated as a min(max) score among of all its children’s scores. So, with the piece of code below we can sort parent documents by their children’s prices in descending order....sort={!parent which=doc_type:parent score=max v=’+doc_type:child +{!func}price’} desc… "* Instead of using just the plain price function you could design your own function, such as : {!func}if(gt(query(prefix:<user_prefix>),0),latest_submission,0) it's just a quick attempt to give you the idea, the function query I posted may need some refinement but it could work Cheers [1] https://blog.griddynamics.com/how-to-sort-parent-documents-by-child-attributes-in-solr/ -------------------------- Alessandro Benedetti Search Consultant, R&D Software Engineer, Director www.sease.io On Mon, Apr 16, 2018 at 9:48 PM, Christopher Schultz < ch...@christopherschultz.net> wrote: > -----BEGIN PGP SIGNED MESSAGE----- > Hash: SHA256 > > All, > > I have documents that need to appear to have different attributes > depending upon which user is trying to search them. One of the fields > I currently have in the document is called "latest_submission" and > it's a multi-valued text field that contains fields packed with a > numeric identifier prefix and then the real data. Something like this: > > 101:2018-04-16T16:41:00Z > 102:2017-01-25T22:08:17Z > 103:2018-11-19T02:52:28Z > > When searching, I will know which prefixes are valid for a certain > user, so I know I can search by *other* fields and then pull-out the > values that are appropriate for a particular user. > > But if I want Solr/Lucene to searcg/sort by the "latest submission", I > need to be able to tell Solr/Lucene which values are appropriate to > use for that user. > > Is this kind of thing possible? I'd like to be able to issue a search > that says e.g.: > > find documents matching name:foo sort by latest_submission starting > with ("102:" or "103:") > > I'm just starting out with this data set, so I can completely change > the organization of the data within the index if necessary. > > Does anyone have any suggestions? > > I've seen some questions on the list about "child documents", and it > seems like that might be relevant. Right now, my input data looks like > this: > > { > { "name" : "document name", > "latest_submission" : [ "prefix:date", "prefix:date", etc. ] > } > } > > But that could easily be changed to be: > > { > { "name" : "document name", > "latest_submission" : { "prefix" : "101", > "date" : "[date]" }, > { "prefix" : "103", > "date" : "[date]" }, > } > } > > > Thanks, > - -chris > -----BEGIN PGP SIGNATURE----- > Comment: GPGTools - http://gpgtools.org > Comment: Using GnuPG with Thunderbird - http://www.enigmail.net/ > > iQIzBAEBCAAdFiEEMmKgYcQvxMe7tcJcHPApP6U8pFgFAlrVDAQACgkQHPApP6U8 > pFj7Mw//dnM0ZMRhbvAlMptYSH3LEj08I0l/oJWMQYilWOIltpZ148QOJp+5Iqu/ > Q9uYfkItdv0Fw77Ebgtmm7N5PUzH7utiyDfKNayvL9d9+MtfFzx4CKPyqdjNDXvC > 2LLUks9ABTX93h7AUdeO5rM4NsPci6LMY8dcxU6fbVDbDT5nYTRULUrbGfDxmY6E > SyMwk25DOzmrIoFCOJcyhuluvHhax753mOQCCljuFaCM3J8ap0+2ZqX8Nl5D2NLz > CqU5ROTGxm+qMVQ8dbqhT6LRdbjj6KqazutOxZl+H+Ix6yVeWZG/9TiAtkKZklvJ > 6wjMB2te4utj35YPhpMkghkIYwo7s6jt9DXyBaf2gv1fbiNKmvPN2eqhsI870f0t > UmknH8Atx3ygeru3ddjIvb2Fn17E7EpKHWxkmmrexKE8uzCo9Ith6BWqL8ae19o/ > LtBQ7RNCNjIbyNk3GcUJmvboM+PAAvUWbnpwQ4V2oI8b5sO9zeopE4JlzbWmG89H > WVmtPpIdw0H8AwLNbJuGaaksY5ZIcYg2iFH56BHvvu1ri3ArSgcQuyHfxEZD7gs3 > cjh+mX9QEgbCVrz2i0CwRkgAMMIffG2SjBsHhUs5ESYqeskkDcyFDi70Q+5wNJ71 > GhAESSbgpI31lpbhkGwh7gdXiJyKJG3EMFDEEZVN5sLhFYv96Q8= > =V+EE > -----END PGP SIGNATURE----- >