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

Cha*_*ell 6 .net lucene.net

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

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

sis*_*sve 7

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

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

要搜索,请使用同时搜索标题和正文的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.
Run Code Online (Sandbox Code Playgroud)