代码之家  ›  专栏  ›  技术社区  ›  cegprakash

elasticsearch:使用ngram分析器时避免重复评分

  •  0
  • cegprakash  · 技术社区  · 7 年前

    假设我在文档包含“hello”和“hello hello”时搜索“hello”,我希望“hello”(你好)的得分更高。

    我正在使用ngram索引和搜索分析器。(因为我在其他场景中确实需要这个)所以“hello hello”匹配两次,因此显示为最佳结果。有什么办法可以避免吗?我已经尝试过术语查询、匹配短语查询、多匹配查询,所有这些查询的分数都较高。

    1 回复  |  直到 7 年前
        1
  •  0
  •   cegprakash    7 年前

    var res = client.Search<MyClass>(s => s
      .Query(q => q
        .Bool(
            b1 => b1.Should(
                s1 =>s1
                .Term(m=>m
                    .Field(f => f._DUPLICATE_COLUMN)
                    .Value("hello")
                    .Boost(1)
                ),
    
                s1=>s1.Match(m => m
                .Field(f => f.MY_COLUMN)
                .Query("hello")
                .Analyzer("myNgramSearchAnalyzer")
                )
            )
            .MinimumShouldMatch(1)
        )
      )
    );
    
    推荐文章