You are viewing a plain text version of this content. The canonical link for it is here.
Posted to java-user@lucene.apache.org by TK Solr <tk...@sonic.net> on 2021/05/21 04:51:40 UTC
MLTQuery not working; seeking debugging tips
I am having difficulty using MoreLikeThisQuery with an n-gram analyzer as its
analyzer.
A test query isn't hitting any document in a unit test case.
Is there any debugging method to use to understand why there is not hit?
Because the test code uses a RAMDirectory, I cannot use Luke to see if the index
was made correctly.
This is a snippet of the query code:
MoreLikeThisQuery mltQuery = new MoreLikeThisQuery(queryText, new String[]
{"source"}, //TODO: Make this array constant defaultFuzzyAnalyzer, "source"); //
defaultFuzzyAnalyzer is a 4-gram analyzer based on NGramTokenFilter.
mltQuery.setMinTermFrequency(1); mltQuery.setMinDocFreq(1);
mltQuery.setPercentTermsToMatch(threshold);mltQuery.setMaxQueryTerms(Integer.MAX_VALUE);
TopDocs topDocs = indexSearcher.search(mltQuery, max);
Thanks.
TK
Re: MLTQuery not working; seeking debugging tips
Posted by TK Solr <tk...@sonic.net>.
I don't know why the code block in my first post lost newlines. Let me try again:
MoreLikeThisQuery mltQuery = new MoreLikeThisQuery(queryText, new String[]
{"source"}, defaultFuzzyAnalyzer, "source"); // defaultFuzzyAnalyzer is a 4-gram
analyzer based on NGramTokenFilter.
mltQuery.setMinTermFrequency(1);
mltQuery.setMinDocFreq(1);
mltQuery.setPercentTermsToMatch(threshold);
mltQuery.setMaxQueryTerms(Integer.MAX_VALUE);
TopDocs topDocs = indexSearcher.search(mltQuery, max);
But after posting this, I realized that I could use IndexSearcher#explain() as:
Explanation expl = indexSearcher.explain(mltQuery, docId);
System.out.printf("docId=%d; expl=%s\n", docId, expl.toString());
If there are better ways to debug, please let me know.
TK
On 5/20/21 9:51 PM, TK Solr wrote:
> I am having difficulty using MoreLikeThisQuery with an n-gram analyzer as its
> analyzer.
> A test query isn't hitting any document in a unit test case.
> Is there any debugging method to use to understand why there is not hit?
>
> Because the test code uses a RAMDirectory, I cannot use Luke to see if the
> index was made correctly.
>
> This is a snippet of the query code:
>
> MoreLikeThisQuery mltQuery = new MoreLikeThisQuery(queryText, new String[]
> {"source"}, //TODO: Make this array constant defaultFuzzyAnalyzer, "source");
> // defaultFuzzyAnalyzer is a 4-gram analyzer based on NGramTokenFilter.
> mltQuery.setMinTermFrequency(1); mltQuery.setMinDocFreq(1);
> mltQuery.setPercentTermsToMatch(threshold);mltQuery.setMaxQueryTerms(Integer.MAX_VALUE);
> TopDocs topDocs = indexSearcher.search(mltQuery, max);
>
>
>
> Thanks.
>
> TK
>
>