Lucene.Net:如何为术语增加额外的权重?

时间:2010-12-30 22:40:54

标签: .net lucene.net

我的索引器索引帖子的标题和正文,但是我希望帖子标题中包含的单词能够承载更多的权重,因此浮动到结果的顶部。

如何为标题词添加额外的重量?

1 个答案:

答案 0 :(得分:7)

您可以在索引编制期间设置字段提升。这假设您将数据放在两个不同的字段中。如果要将所有数据存储在一个大的合并字段中,则需要编写自定义记分器。

var field = new Field("title", "My title of awesomeness", Field.Store.NO, Field.Index.Analyzed);
field.SetBoost(2.0);
document.Add(field);

要搜索,请使用同时搜索标题和正文的BooleanQuery。

var queryText = "where's my awesomeness";
var titleParser = new QueryParser(Version.LUCENE_29, "title", null);
var titleQuery = titleParse.Parse(queryText);
var bodyParser = new QueryParser(Version.LUCENE_29, "body", null);
var bodyQuery = bodyParser.Parse(queryText);

var mergedQuery = new BooleanQuery();
mergedQuery.Add(titleQuery, BooleanClause.Occur.Should);
mergedQuery.Add(bodyQuery, BooleanClause.Occur.Should);
// TODO: Do search with mergedQuery.