如果查询词是"ABCD",则在标记化后它是"A"BC"D"。我想提升术语"BC",所以查询词是这样的:
A BC^10 D"和短语查询"ABCD">
用户键入的所有查询词都将自动进行处理,这样重要的查询词将得到增强。
我想我可以自定义一个新的Tokenizer来做这件事,但我不知道它是否可行,或者是否有其他更简单的方法。
您可以使用QueryElevationComponent来完成此操作。如果您在elevate.xml文件中放入类似BC的单词,那么这些术语将在查询时自动增强。当然,如果您已经将compnant添加到您的请求处理程序中。
编辑:
我认为你的意思是增加条款,而不是一个条款的文件。我认为在您的情况下,如果您使用正则表达式和白名单查找特定的术语,并在发送到solr之前更改字符串以包括boost,这可能会奏效。
[Fact]
public void Boost()
{
var query = "ABCD";
var importantTerms = new List<string>{ "BC"};
importantTerms.ForEach(term => query = query.Replace(term, string.Format("+{0}^10+", term)));
Assert.Equal("A+BC^10+D", query);
}