如果查询词是“ABCD”,则在被标记化之后它是“A”“BC”“D”。我想提高术语“BC”,所以查询词是这样的:
A BC^10 D" and phrase query "ABCD"
用户输入的所有查询字词都会自动处理,以便提升重要的查询字词。
我想我可以自定义一个新的Tokenizer,但我不知道它是否可行,或者是否有其他方法更简单。
答案 0 :(得分:0)
您可以使用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);
}