NEST ElasticSearch for你的意思是功能

时间:2017-05-26 11:15:18

标签: c# .net linq elasticsearch nest

我正在努力实施"你的意思是"像我的Windows桌面应用程序中的谷歌功能。

我创建了一个插入" Name"和"描述"在我的索引中说" 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)"。

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

1 个答案:

答案 0 :(得分: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

短语是高级术语建议器,短语可让您选择带有映射的预选建议,如文档所示 (https://www.elastic.co/guide/en/elasticsearch/reference/current/search-suggesters-phrase.html

你需要在嵌套

中使用这个片段
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")
    ))