1

如果查询词是“ABCD”,那么被分词后就是“A”“BC”“D”。我想提升词“BC”,所以查询词是这样的:

A BC^10 D" 和短语查询 "ABCD"

用户输入的所有查询词都将被自动处理,以便提升重要的查询词。

我想我可以自定义一个新的 Tokenizer 来做,但我不知道它是否可行,或者有没有其他更简单的方法。

4

1 回答 1

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);
    }
于 2012-09-29T06:43:14.797 回答