2013-10-17 108 views
1

我已經有了一個Suggest對象,裏面充滿了兩條建議。此時我找不到任何文檔或示例代碼來幫助指導我從Suggest對象獲取建議。在Elasticsearch Java API中使用建議

下面的是我如何獲取的推薦對象

val generator:DirectCandidateGenerator = candidateGenerator("name") 
      .prefixLength(0) 
      .minWordLength(0) 
      .suggestMode("always") 
      .maxEdits(2); 
val phraseSuggest:PhraseSuggestionBuilder = phraseSuggestion("did_you_mean") 
     .field("name") 
    .addCandidateGenerator(generator) 
    .text(t) 
    .gramSize(3); 

val search = Global.getClient().prepareSearch("businesses") 
    .setSearchType(SearchType.QUERY_THEN_FETCH) 
    .setQuery(customQuery) 
    .setFrom(0).setSize(max) 
    .addSuggestion(phraseSuggest) 
    .execute() 
    .actionGet(); 


val suggest = search.getSuggest() 
println("Suggest Size: " + suggest.size()) 

上面的代碼是Scala。如果你理解Java,那麼它就是非常自我解釋的。如果您知道Java中的解決方案,那麼我可以輕鬆將其轉換爲Scala代碼,因此如果您不知道Scala代碼,則無需嘗試找出Scala代碼。

任何幫助將不勝感激。謝謝

+0

有什麼不對?我猜你會得到0條建議?你有沒有嘗試使用REST來做同樣的事情? – javanna

+0

不,如我所說,建議的對象有兩個實體。問題是,我如何提取建議? – Commander

+0

'Suggest'對象是'Iterable' ...不知道我在這裏錯過了什麼...... – javanna

回答

1

一個比較難看的做法,但工作原理:

val options = suggest.iterator().next().iterator().next().getOptions() 
options.asScala.map(x => x.getText.string).toList