如果查询词是“ABCD”,那么被分词后就是“A”“BC”“D”。我想提升词“BC”,所以查询词是这样的:
A BC^10 D" 和短语查询 "ABCD"
用户输入的所有查询词都将被自动处理,以便提升重要的查询词。
我想我可以自定义一个新的 Tokenizer 来做,但我不知道它是否可行,或者有没有其他更简单的方法。
如果查询词是“ABCD”,那么被分词后就是“A”“BC”“D”。我想提升词“BC”,所以查询词是这样的:
A BC^10 D" 和短语查询 "ABCD"
用户输入的所有查询词都将被自动处理,以便提升重要的查询词。
我想我可以自定义一个新的 Tokenizer 来做,但我不知道它是否可行,或者有没有其他更简单的方法。
您可以使用QueryElevationComponent来做到这一点。如果您在 elevate.xml 文件中放入像 BC 这样的词,那么这些词将在查询时自动提升。当然,如果您已将组件添加到您的请求处理程序中。
编辑:
我认为您的意思是增加术语而不是术语的文档。我认为在您的情况下,如果您使用正则表达式和白名单查找特定术语并在发送到 solr 之前更改字符串以包含提升,它可能会起作用。
[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);
}