Lucene.Net前缀查询

Lucene.Net前缀查询,lucene,lucene.net,Lucene,Lucene.net,我正在为我的网站搜索服务开发一个建议框。我必须搜索如下字段: Visual Basic企业版 Visual C++ Visual J++ 我的代码是: Directory dir = Lucene.Net.Store.FSDirectory.GetDirectory("Index", false); IndexSearcher searcher = new Lucene.Net.Search.IndexSearcher( dir,true); Term term = ne

我正在为我的网站搜索服务开发一个建议框。我必须搜索如下字段:

Visual Basic企业版
Visual C++
Visual J++

我的代码是:

  Directory dir = Lucene.Net.Store.FSDirectory.GetDirectory("Index", false);

  IndexSearcher searcher = new Lucene.Net.Search.IndexSearcher( dir,true);    

  Term term = new Term("nombreAnalizado", _que);

  PrefixQuery query = new PrefixQuery(term);

  TopDocs topDocs = searcher.Search(query, 10000);
此代码在这种情况下运行良好:

“企业”将与“Visual Basic企业版”匹配

但“企业E”与任何东西都不匹配

我在索引时和用户搜索时删除了空格


谢谢。

我认为您应该使用QueryParser,让它构建适当的查询对象,而不是使用PrefixQuery之类的特定对象

在Java中:

QueryParser parser = new QueryParser(Version.LUCENE_CURRENT, "nombreAnalizado", new StandardAnalyzer(Version.LUCENE_CURRENT));
Query query = parser.parse(_que);
确保您使用的分析器与用于索引的分析器相同