【问题标题】:NEST ElasticSearch for Did you mean featureNEST ElasticSearch for 你的意思是功能
【发布时间】:2017-05-26 11:15:17
【问题描述】:

我正在尝试在我的 Windows 桌面应用程序中实现像谷歌这样的“你是说”功能。

我创建了一个 POC,它在我的索引中插入“名称”和“描述”,比如“MyIndex”

我可以进行全文搜索,但无法进行“您的意思是”之类的操作。

这是我在 NEST 文档中找到的代码片段,但我无法理解:

s => s
.Suggest(ss => ss
    .Term("my-term-suggest", t => t
        .MaxEdits(1)
        .MaxInspections(2)
        .MaxTermFrequency(3)
        .MinDocFrequency(4)
        .MinWordLength(5)
        .PrefixLength(6)
        .SuggestMode(SuggestMode.Always)
        .Analyzer("standard")
        .Field(p => p.Name)
        .ShardSize(7)
        .Size(8)
        .Text("hello world")
    )
    .Completion("my-completion-suggest", c => c
        .Contexts(ctxs => ctxs
            .Context("color",
                ctx => ctx.Context(Project.First.Suggest.Contexts.Values.SelectMany(v => v).First())
            )
        )
        .Fuzzy(f => f
            .Fuzziness(Fuzziness.Auto)
            .MinLength(1)
            .PrefixLength(2)
            .Transpositions()
            .UnicodeAware(false)
        )
        .Analyzer("simple")
        .Field(p => p.Suggest)
        .Size(8)
        .Prefix(Project.Instance.Name)
    )
    .Phrase("my-phrase-suggest", ph => ph
        .Collate(c => c
            .Query(q => q
                .Inline("{ \"match\": { \"{{field_name}}\": \"{{suggestion}}\" }}")
                .Params(p => p.Add("field_name", "title"))
            )
            .Prune()
        )
        .Confidence(10.1)
        .DirectGenerator(d => d
            .Field(p => p.Description)
        )
        .GramSize(1)
        .Field(p => p.Name)
        .Text("hello world")
        .RealWordErrorLikelihood(0.5)
    )
)

什么是颜色,在这里做什么? 还有这是什么“ctx => ctx.Context(Project.First.Suggest.Contexts.Values.SelectMany(v => v).First()

还有这个“.Prefix(Project.Instance.Name)”。

我在正确的道路上吗? 请帮忙。

【问题讨论】:

    标签: c# .net linq elasticsearch nest


    【解决方案1】:

    你的意思是功能更有可能是术语建议者 (https://www.elastic.co/guide/en/elasticsearch/reference/current/search-suggesters-term.html)

    完成是自动完成。当你在搜索框中写“so”时,它会给你“sony”、“soly”等。因此,在这种情况下,您将不需要此功能。 (https://www.elastic.co/guide/en/elasticsearch/reference/current/search-suggesters-completion.html)

    Phrase 是高级术语建议器,phrase 可让您选择预先选择的建议,并按照文档所述进行映射 (https://www.elastic.co/guide/en/elasticsearch/reference/current/search-suggesters-phrase.html)

    你需要这个 sn-p 在嵌套中

    s => s
    .Suggest(ss => ss
        .Term("my-term-suggest", t => t
            .MaxEdits(1)
            .MaxInspections(2)
            .MaxTermFrequency(3)
            .MinDocFrequency(4)
            .MinWordLength(5)
            .PrefixLength(6)
            .SuggestMode(SuggestMode.Always)
            .Analyzer("standard")
            .Field(p => p.Name)
            .ShardSize(7)
            .Size(8)
            .Text("hello world")
        ))
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2010-09-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-11-02
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多