solr:如何在tokenizer之后提升查询词

时间:2012-09-29 06:32:26

标签: solr tokenize term solr-boost

如果查询词是“ABCD”,则在被标记化之后它是“A”“BC”“D”。我想提高术语“BC”,所以查询词是这样的:

A BC^10 D" and phrase query "ABCD"

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

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

1 个答案:

答案 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);
    }