Hi,
I'm struggling with a problem I can't solve. I create my Query object from
my own implemented query builder. However, I don't get any results back but
if I do a query.ToString and send it to the QueryParser I get result. Let me
show you some code.
//this doesn't return any results
//query.ToString() = "+category:general +product_type:1763 +title:\"shirt
brewality\" +country:2 +whitelabel:5 +price_type:1"
ISearchResult<ITinyItem> searchResult2 = searcher.Search(query);
//this returns 4 results
//query.Clone().ToString() = "+category:general +product_type:1763
+title:\"shirt brewality\" +country:2 +whitelabel:5 +price_type:1"
ISearchResult<ITinyItem> searchResult = searcher.Search(query.Clone
().ToString());
//this is called from query.Clone().ToString() above
public ISearchResult<T> Search(string searchTerms)
{
if (string.IsNullOrEmpty(searchTerms)) throw new
ArgumentNullException("searchTerms");
QueryParser parser = new QueryParser(defaultField, analyzer);
parser.SetFuzzyMinSim(fuzzyMinSimilarity);
Query query = parser.Parse(searchTerms);
//the one that doesn't return any results calls below (Search(Query))
directly.
//So the only, what I can see, difference is the code above in this
function
return Search(query);
}
//and both are calling this
public ISearchResult<T> Search(Query query)
{
//query.ToString() returns below result for BOTH, the one that returns 0
and the one that returns 4 result, queries
//"+category:general +product_type:1763 +title:\"shirt brewality\"
+country:2 +whitelabel:5 +price_type:1"
Hits hits = internalSearcher.Search(query);
//code to create result
...
}
I have looked at the types of the underlying query and they are also the
same. BooleanQuery with 6 clauses where 5 are term queries and one, title,
is a phrase query. Looks the same both for my query and the one that
QueryParser.Parse creates.
I'm sooo confused! Please help!
Br,
Martin