Hi,

Thanks for the help.

>If i'm understanding you correctly, you modified the MoreLikeThis class to
>include your new clause (using those two lines above) correct?

Yes.

The time field is a "long" and so is the range variables, so the
problem should not be related to that. If I construct the query by
adding a ConstantScoreRangeQuery, nothing more, no results are
returned. But I have not tried to add it to the filter part of the
mlt-handler; I suspect that this would solve the problem.

However, after trying more alternatives, I think that adding a

&fq=time:[1230922259744+TO+1231440659744]

to the mlt-url-request seems to actually add a time filter to the
constructed MLT-query:

Query:(+kategori:nyheter titel:moderbolaget^2.0 artikel:moderbolaget
titel:pininfarin^2.0 artikel:pininfarin titel:bilbygg^1.9725448
artikel:bilbygg^0.9862724 titel:huvudäg^1.9257689
artikel:huvudäg^0.9628844 titel:uddevall^1.9054867
artikel:uddevall^0.95274335 titel:majoritet^1.71646
artikel:majoritet^0.85823 titel:volvo^1.6696839
artikel:volvo^0.83484197 titel:italiensk^1.5226858
artikel:italiensk^0.7613429)~5

So, a mlt.fq does not seems to be necessary to implement since the fq
filter seems to be passed to the mlt-query.

To use a long for the time field rather than a Field.Date is probably
bad, but it seems to work at least for testing. So, I think that my
problem is solved. Thanks!

/Clas






On Fri, Jan 9, 2009 at 2:40 AM, Chris Hostetter
<hossman_luc...@fucit.org> wrote:
>
> : Solr/Lucene. I am in a situation where I think that I can improve the
> : quality of the LikeThis-documents significantly by restricting the
> : MoreLikeThis-query to documents where one field has its term in a
> : specified range. That is, I would like to add a RangeQuery to the
> : default MoreLikeThis query.
>        [...]
> : I would like to also add a range restriction as,
> :
> :   rq = new 
> ConstantScoreRangeQuery("time",startTimeString,endTimeString,true,true);
> :   query.add(rq, BooleanClause.Occur.MUST);
> :
> : This is all made in
> :   
> contrib/queries/src/java/org/apache/lucene/search/similar/MoreLikeThis.java
> :
> : However, this does not work at all when running from Solr (no MLT
> : suggestions are returned). I suspect that the problem is that the
>
> If i'm understanding you correctly, you modified the MoreLikeThis class to
> include your new clause (using those two lines above) correct?
>
> If you aren't getting any results, i suspect it may be an issues of term
> value encoding ... is your "time" field a Solr DateField?  what is the
> value of startTimeString and endTimeString? ... if you replace all of the
> MLT Query logic so that it's *just* the ConstantScoreRangeQuery do you get
> any results?
>
> : does not perform a standard query, but a getDocList:
> :
> :   results.docList = searcher.getDocList(mltQuery, filters, null,
> : start, rows, flags);
> :
> : and that this type of query does not handle a RangeQuery. Is this
> : correct, or what is the problem with adding a RangeQuery? Should it be
>
> a RangeQuery will work just fine.  but in general the type of problem you
> are trying to solve could be more generally dealt with if the MLT code had
> a way to let people specify "filter" queries (like the existing "fq"
> param) to be applied tothe MLT logic -- that way they wouldn't contribute
> to the relevancy ... it seems like it would be pretty easy to add a
> "mlt.fq" param for this purpose if you wanted to appraoch the problem
> thatway as a more generic path -- but i'm not too familiar with the MLT
> code to say for certain waht would be required, and I know the code is
> probably more complicated then it should be with the MoreLikeThisHandler
> and the MoreLikeThisComponent (i think there's a MoreLikeThisHelper that
> they share or something)
>
>
>
> -Hoss
>
>

Reply via email to