我正在努力实施"你的意思是"像我的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)
"。
我是在正确的道路上吗? 请帮忙。
答案 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")
))