2010-04-23 118 views
1

我正在为我的网站搜索服务开发一个建议框。我有搜索这样的领域: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企业版”

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

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

谢谢。

回答

2

我想你应该使用QueryParser并让它构建适当的Query对象,而不是使用特定的PrefixQuery之类的东西。

在Java:

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

确保您使用的是您用于索引相同的分析仪。

+0

很好,谢谢! – Sole 2010-04-24 16:26:56