Sorry I don't know what you mean. If "listpos" field contains multiple values like "list=pos" then is it possible to order by field value where that field value fits a query?
For example list 1 contains: p1 and p2, list 2 contains p2 and p1 in this order, then p1 document has a listpos field with values "1=1" and "2=2" p2 document has a listpos fiels with values "1=2" and "2=1" And if list 1 should be displayed then i should say to solr: sort by field value where listpos:1=* Because i need products which is in list1, and i want to sort by this matching term. 2016. ápr. 1. 19:35 ezt írta ( <billnb...@gmail.com>): > Put the match into 2 separate fields and index it. Then sort in Solr by > the 2 fields is one way > > Bill Bell > Sent from mobile > > > > On Apr 1, 2016, at 11:15 AM, John Bickerstaff <j...@johnbickerstaff.com> > wrote: > > > > Just to be clear - I don't mean who requests the list (application or > user) > > I mean what "rule" determines the ordering of the list? > > > > Or, is there even a rule of any kind? > > > > In other words, does a user arbitrarily decide that documentA, documentF, > > and documentW should be on a list of their own? For reasons known only > to > > the user? > > > > Or - does the ordering of the list depend on some piece of data? (like a > > date, or a manufacturer, or a price range or any other piece of "hard" > data) > > > > === > > > > To give an example from what I'm working on right now -- > > > > My subject matter experts have given me a rule that says: > > > > *Documents of content_type "bar" should come higher in the results than > > documents of content_type "foo".* > > > > PsuedoCode: If (content_type == bar) then put this doc highest in the > > results. If (content_type == foo) put those docs after the "bar" > > content_type docs. > > > > > > This is an example of the ordering being tied to a specific piece of data > > which I can manipulate in a "sub query" (that's probably the wrong > term...) > > > > > > This isn't exactly what you're doing, but it's close -- IF you have rules > > you can express clearly in this way... > > > > --- > > > > Also, I'm confused a little by your statement that SOLR does the > filtering > > and pagination, thus you can't sort the documents after Solr returns > them... > > > > My mental model is that you ask Solr for all the documents that match a > > certain criteria. Solr returns that "set" of documents and then for your > > list, you sort those document titles or ID's according to some rule -- > > possibly in the javascript on the web page... But perhaps I'm not > > understanding your situation well enough... > > > > Oh - are you perhaps saying that your ONLY criteria for getting these > > documents is the list number? That would make sense, although there may > > still be room for sorting based on some kind of logic / data point > outside > > of SOlR. You could get all the documents associated to list #4, and then > > sort them based on some hard data point they all contain. At the very > > least, your listpos "array" becomes simpler... > > > > What does your query currently look like? > > > >> On Fri, Apr 1, 2016 at 10:51 AM, Tamás Barta <bartata...@gmail.com> > wrote: > >> > >> Some of the lists are created by users and some are generated by > >> applications, it doesn't matter. > >> > >> It would be fine to solve it in Solr because Solr does the work of > >> filtering and pagination. If sorting were done outside than I would > have to > >> read every document from Solr to sort them. It is not an option, I have > to > >> query onle one page. > >> > >> I don't understand how to solve it using subqueries. > >> 2016. ápr. 1. 18:42 ezt írta ("John Bickerstaff" < > j...@johnbickerstaff.com > >>> ): > >> > >>> Specifically, what drives the position in the list? Is it arbitrary or > >> is > >>> it driven by some piece of data? > >>> > >>> If data-driven - code could do the sorting based on that data... > >> separate > >>> from SOLR... > >>> > >>> Alternatively, if the data point exists in SOLR, a "sub-query" might be > >>> used to get the right sort order on the items returned by the "main" > >>> search... Possibly without having to resort to the clunky-feeling > >> listpos > >>> multivalued field... > >>> > >>>> On Fri, Apr 1, 2016 at 10:32 AM, Tamás Barta <bartata...@gmail.com> > >>> wrote: > >>> > >>>> For example I have to display sellable products which are in list X in > >>> the > >>>> correct order. > >>>> > >>>> If I add a "status" and "list" (multivalued) fields to every document > >>>> (products), then I can execute a query: status:sellable AND list:X, > >>> where X > >>>> is the ID of the list. The list field contains IDs of the list in > which > >>> the > >>>> product is in. > >>>> > >>>> The problem is that I can't sort the result. A product has different > >>> index > >>>> for every list. > >>>> > >>>> Is it clear now? > >>>> > >>>> Earlier I added a "listpos" field with multivalue content, for > example: > >>>> > >>>> 1:23 > >>>> 2:4 > >>>> > >>>> Which means that this product is in position 23 in list 1 and it is in > >>>> position 4 in list 2. After that I created a custom comparator which > >>> parses > >>>> field values to get index for the specified list and sorts by that > >> index. > >>>> > >>>> But I didn't like that solution much. I wish there would be a better > >>>> solution. In SolrJ unfortunately I can't find an API to set custom > >>>> comparator like I did in Lucene. So I don't know how to solve this > >>> problem > >>>> in Solr. > >>>> > >>>> Thanks, > >>>> Tamás > >>>> 2016. ápr. 1. 17:25 ezt írta ("Alessandro Benedetti" < > >>>> abenede...@apache.org > >>>>> ): > >>>> > >>>>> I think this is a classic XY Problem , you are trying to solve X with > >>> Y , > >>>>> and you are asking us about Y . > >>>>> Could you describe us what is your X problem ? What are you trying to > >>> do > >>>>> with this ordered lists ? > >>>>> > >>>>> If not I would add a field to the product called : > >>>>> list_position ( or a similar name) of type geo point (x,y) . > >>>>> X could be your list ID > >>>>> Y the position. > >>>>> Then you can play with spatial search, to get what you want. > >>>>> > >>>>> But again, let's try to solve X. > >>>>> > >>>>> Cheers > >> >