Lucene.Net:搜索未找到所有值

Lucene.Net:search does not find all the values

使用Lucene.Net 3.0.3。 我有几个 classes 具有这样的字段:

public class Test1
{
 public string Name {get;set;}
}

我如何创建索引:

 var doc = new Document();
 doc.Add(new Field(KEYWORDS_FIELD_NAME, someUid, CultureInfo.InvariantCulture), Field.Store.YES, Field.Index.ANALYZED));

我如何创建查询:

var analyzer=new RussianAnalyzer(Version.LUCENE_30);

private Query ParseQuery(string queryString,Analyzer analyzer)
{
var classQuery = new BooleanQuery();
var hs = new HashSet<string>(StringComparer.InvariantCultureIgnoreCase);
foreach(var par in Parameters)
{ 
  classQuery.add(new TermQuery(new Term(KEYWORDS_FIELD_NAME,par.ClassName.ToLower()),Occur.SHOULD); 
  hs.add(par.PropertyName);
}

var parser=new MultiFieldQueryParse(Version.LUCENE_30, hs.ToArray(), analyzer);
var multiQuery=parser.Parse(queryString.Ttim());
var result=new BooleanQuery
          {
            {classQuery,Occur.MUST},
            new BooleanClause(multiQuery,Occur.MUST) 
          };
  return result;
 }

和搜索请求:

 var query=ParseQuery(queryString,analuzer);
 using (var searcher = new IndexSearcher(luceneDirectory))
 {
       var hits = searcher.Search(query, null, 10000);
 }

在搜索索引中有一个 "Name" 属性 of class Test1。 一些属性的值是:

40002 40001 4001 4009

和其他类似值。

当我输入“4001”时,搜索产生了一个结果。这很适合我。 但是,当我输入“400”时,搜索没有找到任何值。 我知道这个值不在索引中,但我希望在这种情况下搜索会找到 "similar" 值:4001、40002 和其他值。

这能做到吗?我究竟做错了什么? 谢谢。

P.S。它适用于“400*”和没有 RegexQuery 的 MultiFieldQuery。它每 30% 变慢。 当我使用 RegexQuery 时 - 70-80%。

尝试搜索 400*,您还需要 WildCardQuery 不是布尔查询