我正在为我的网站搜索服务开发一个建议框。我必须像这样搜索字段:
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”不匹配任何东西。
我在索引时和用户搜索时删除了空格。
谢谢。
发布于 2010-04-24 06:13:48
我认为您应该使用QueryParser并让它构建适当的查询对象,而不是使用特定的东西,比如PrefixQuery。
在Java中:
QueryParser parser = new QueryParser(Version.LUCENE_CURRENT, "nombreAnalizado", new StandardAnalyzer(Version.LUCENE_CURRENT));
Query query = parser.parse(_que);确保您使用的分析器与用于索引的分析器相同。
https://stackoverflow.com/questions/2701169
复制相似问题