Ups, Diego, I have just read your answer again. Now I see that it is [features] element that triggers calculation of all store features. That gives hope model only executed the features it needs ;)
Best regards, Dariusz Wojtas On Sat, Jan 13, 2018 at 11:12 PM, Dariusz Wojtas <dwoj...@gmail.com> wrote: > Hi, > > Thanks for the response, I understand that all features from the given > store are calculated, no matter if they are used or not. > OK, spread features across different models. > But what if different models share some features? > Creating copies of feature definitions in different stores, one per model, > is erroneous ... > Having several models in one store, some of them use only part of these > features - that seems 'expensive' ;) > > Simple syntax evolution would be very helpful, to give {!ltr} optional > 'store' parameter. It could override the current features store, is > specified. > {!ltr reRankDocs=25 store=storeA model=simpleModelA} > > And {!ltr} executes 'model based calculation', not 'store based > calculation'. Model knows what featues are required. > Why are all features executed? > > Best regards, > Dariusz Wojtas > > > On Sat, Jan 13, 2018 at 4:03 PM, Diego Ceccarelli < > diego.ceccare...@gmail.com> wrote: > >> Hi Dariusz, >> >> On Jan 12, 2018 14:40, "Dariusz Wojtas" <dwoj...@gmail.com> wrote: >> >> Hi, >> >> I am working with the LTR rescoring. >> Works beautifully, but I am curious about something. >> How do I specify the feature store in a way different than using the >> [features] syntax? >> [features store=yourFeatureStore] >> >> >> >> What is the problem with this syntax? If the problem is the name of the >> field, you can also call it by doing fl=title,authors,myfield=[features >> store=yourFeatureStore] >> I can't think of alternative ways.. >> >> >> >> I have a range of models in my custom feature store, with plenty of >> features implemented. >> I have found that when I call LTR with model using only two features, Solr >> still executes them all. >> >> My setup in solrconfig.xml >> - >> <str name="fl">id,score,why_score:[explain style=nl],[features >> store=store_incidentDB]</str> >> <str name="rq">{!ltr reRankDocs=$reRankDocs model=simpleModelA}</str> >> -- >> >> simpleModel above only uses LinearModel with 2 features. >> >> >> What do I see in results? >> In response I can see it has executed ALL features (there are values >> calculated) in section: >> 1) -> response -> result -> doc -> <str name="[features]">HERE</str> >> >> In addition, there is my model executed and only TWO features of the >> executed model are presented in: >> >> >> It is intended, the reason is that usually you want to execute your model >> and at the same time log a *superset* of the features to train the next >> model. If you want to compute only the features of the model you can >> define >> a featureStore that matches exactly the features that you have in the >> model. >> >> 2) -> response -> debug -> explain >> >> Why do I see all features being executed, if the specified model only >> contains two features? >> >> I tried to reduce 'fl' to: >> <str name="fl">id,score,why_score:[explain style=nl]</str> >> and id works as expected then: >> 1. additional features are not executed (correct) >> 2. my model works, only two features of the selected model (correct) >> >> And the final questions for this long email are: >> 1. why does it execute all features when i specify 'store'? >> 2. how do I specify the 'store', if I have more stores, but do not want to >> execute all their features? >> >> >> Just define a feature store that matches the features that you have in the >> model. Please note that the featureStore that you specify in fl= >> [features] >> field **will not** affect the reranking (the model will compute only the >> features that are specified in the model json file), you should ask for >> the >> [features] only if you want to log them. >> Please do not hesitate to ask if something is not clear ;) >> >> Cheers, >> Diego >> >> >> >> Best regards, >> Dariusz Wojtas >> > >