首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >StopWords在StandardAnalyzer中的应用

StopWords在StandardAnalyzer中的应用
EN

Stack Overflow用户
提问于 2013-11-12 14:31:39
回答 1查看 3K关注 0票数 1

使用Lucene.NET 3.0.3我有以下问题。

我的项目使用StandardAnalyzer和StopWord-List (结合德语和英语单词)来分析文档.

在搜索时,我手工创建搜索项,并使用MultiFieldQueryParser解析它。解析器与索引文档使用相同的分析器初始化。

解析的搜索查询初始化了一个BooleanQuery。在Lucene索引中使用BooleanQuery和TopScoreDocCollector搜索IndexSearcher。

我的代码看起来是:

代码语言:javascript
复制
using (StandardAnalyzer analyzer = new StandardAnalyzer(Lucene.Net.Util.Version.LUCENE_30, roxConnectionTools.getServiceInstance<ISearchIndexService>().GetStopWordList()))
{
    ...
    MultiFieldQueryParser parser = new MultiFieldQueryParser(Lucene.Net.Util.Version.LUCENE_30, searchFields, analyzer);
    parser.MultiTermRewriteMethod = MultiTermQuery.SCORING_BOOLEAN_QUERY_REWRITE;
    parser.AllowLeadingWildcard = true;
    ...
    Query searchQuery = parser.Parse(searchStringBuilder.ToString().Trim);
    ...
    BooleanQuery boolQuery = new BooleanQuery();
    boolQuery.Add(searchQuery, Occur.MUST);
    ...
    TopScoreDocCollector scoreCollector = TopScoreDocCollector.Create(SearchServiceTools.MAX_SCORE_COLLECTOR_SIZE, true);
    ...
    searcher.Search(boolQuery, scoreCollector);
    ScoreDoc[] scoreDocs = scoreCollector.TopDocs().ScoreDocs;
}

如果我用值“Test”索引文档字段,我就无法通过搜索这个术语找到这个文档。

如果我将搜索词更正为“”,我就会得到结果。

‘这个词在我的单子里.

我的搜索查询如下所示:

代码语言:javascript
复制
 Manually generated search query: _**(+\*Test\* +\*und\* +\*Produktivumgebung\*)**_
代码语言:javascript
复制
 Parsed search query: _**+(title:\*Test\*) +(title:\*und\*) +(title:\*Produktivumgebung\*)**_

为什么我找不到搜索“Test”的文档?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-11-12 16:28:55

未分析通配符查询(例如,请参阅this question )。因为您是(如果我理解正确的话),将查询"Test- und Produktivumgebung"解释为(+*Test* +*und* +*Produktivumgebung*),所以分析器不会用于任何通配符查询,停止词也不会被删除。

如果您删除了执行该转换的步骤,那么查询"Test- und Produktivumgebung"应该被解析为短语查询并进行分析,并且应该工作得很好。消除这一步骤的另一个原因是,将领先的通配符应用于每个术语将导致您的性能变得非常差。这就是为什么必须手动启用引导通配符的原因,因为使用它们通常是个坏主意。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/19931921

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档