Lucene partly parcer (parcer with contains)

77 Views Asked by At

I got Lucenes parser, who return me Comments from table. It's looks like:

private static IEnumerable<Comment> _search(string searchQuery, string searchField = "")
{
  using (var searcher = new IndexSearcher(_directory, false))
  {
     var analyzer = new StandardAnalyzer(Version.LUCENE_30);
     {
            var parser = new QueryParser(Version.LUCENE_30, searchField, analyzer);
            var query = parseQuery(searchQuery, parser);
            var hits = searcher.Search(query, 1000).ScoreDocs;
            var results = _mapLuceneToDataList(hits, searcher);
            return results;
    }
  }
}
////Some code
private static Query parseQuery(string searchQuery, QueryParser parser)
{
    return parser.Parse(searchQuery.Trim());
}

I got comment with such text: "sometext python sometext". When i use _search("python", "Text"), its return me my table. But when i use _search("pyth", "Text"), it's don't find anything.

I defenetly know, problem in

var query = parseQuery(searchQuery, parser);
var hits = searcher.Search(query, 1000).ScoreDocs;

But i don't know, problem in my Query or u should transfer some params in searcher... Did anyone has some suggestions?

Kind regards.

1

There are 1 best solutions below

0
On

At first, i shoud be allow leading wildcard. After "parser" i should wright

parser.AllowLeadingWildcard = true;

Then i shoud use "*" character in my Query:

return parser.Parse("*" + searchQuery.Trim() + "*");

Now it's work. Thanks Lucas for supporting.