2017-05-26 46 views
0

我試圖在我的Windows桌面應用程序中實現「你的意思」功能像谷歌。NEST ElasticSearch您的意思是功能

我創建了插入「姓名」,並在我的索引說:「MyIndex」

我能夠做全文搜索,但未能像「你的意思是」做一些事情「描述」一個POC。

這裏是一個代碼snipt我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

的做你的意思是功能更容易期限建議者(https://www.elastic.co/guide/en/elasticsearch/reference/current/search-suggesters-term.html

完成自動完成是。當你在搜索框中輸入「so」時,它會給你「索尼」,「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") 
    ))