Check that you're using the same analyzer that you indexed with to search against that particular field. Also, wildcard queries don't really handle spaces. I suggest using the query parser if you want to have multiple terms to search the same field by. Considering your previous query, you'll need to SetAllowLeadingWildcard(true) on the queryparser and remember that the default operator on the queryparser is OR. You may want to change that to AND considering your example. It's also not a good idea to start your wildcard query with a wildcard, as it can make searches extremely slow.
You can use Luke (http://code.google.com/p/luke/) to write queries against your index, if you wanted to test your queries that way. It also uses the queryparser to parse it and gives you a human readable parsing of your query, you can see exactly how lucene interprets it. Christopher On Wed, Feb 23, 2011 at 7:51 AM, Wen Gao <samuel.gao...@gmail.com> wrote: > Hi, > I'm using Wildcard query to search phrases, but failed to get results. E.g. > I search for "*data man*",however, no result returned although there is a > record of "*data manage*" in my index. I change the "data man" as > "*data*man*" using following code: > > " > String s = "*" + s.Replace(" ", "*") + "*"; > WildcardQuery wildquery = new Lucene.Net.Search.WildcardQuery(new > Lucene.Net.Index.Term("name", keyword)); > ....... > searcher.Search(wildquery); > " > > It works if I only search part of phrase without 'space', e.g. the record > returns when i type "*data*". > > Any ideas? > > > > Thanks, > > Wen Gao >