Lucene.Net PrefixQuery

时间:2010-04-23 18:47:30

标签: 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 = new Term("nombreAnalizado", _que);

  PrefixQuery query = new PrefixQuery(term);

  TopDocs topDocs = searcher.Search(query, 10000);

此代码适用于这种情况:

“Enterprise”将匹配“Visual Basic Enterprise Edition”

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

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

感谢。

1 个答案:

答案 0 :(得分:2)

我认为您应该使用QueryParser并让它构建适当的Query对象,而不是像PrefixQuery那样使用特定的东西。

在Java中:

QueryParser parser = new QueryParser(Version.LUCENE_CURRENT, "nombreAnalizado", new StandardAnalyzer(Version.LUCENE_CURRENT));
Query query = parser.parse(_que);

确保使用的是与索引编码器相同的分析器。