在Elasticsearch Java API中使用建议
我已经有了一个包含两个建议的建议对象。在这一点上,我找不到任何文档或示例代码来帮助我从Suggest对象获取建议 下面是我如何获取建议对象的在Elasticsearch Java API中使用建议,java,scala,
elasticsearch,Java,Scala,
elasticsearch,我已经有了一个包含两个建议的建议对象。在这一点上,我找不到任何文档或示例代码来帮助我从Suggest对象获取建议 下面是我如何获取建议对象的 val generator:DirectCandidateGenerator = candidateGenerator("name") .prefixLength(0) .minWordLength(0) .suggestMode("always") .maxE
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,则无需尝试了解它
任何帮助都将不胜感激。谢谢你这是一种相当丑陋的方法,但效果很好:
val options = suggest.iterator().next().iterator().next().getOptions()
options.asScala.map(x => x.getText.string).toList
一种相当丑陋的方法,但有效:
val options = suggest.iterator().next().iterator().next().getOptions()
options.asScala.map(x => x.getText.string).toList
发生了什么?我想你得到了0个建议吧?你试过使用REST做同样的事情吗?没有,就像我说的,建议对象中有两个实体。问题是,我如何提取建议?
Suggest
对象是Iterable
…不确定我在这里遗漏了什么…试图忘记你写的东西,适度会有所帮助。让我们继续,两个实体你指的是iterable的两个级别?怎么了?我想你得到了0个建议吧?你试过使用REST做同样的事情吗?没有,就像我说的,建议对象中有两个实体。问题是,我如何提取建议?Suggest
对象是Iterable
…不确定我在这里遗漏了什么…试图忘记你写的东西,适度会有所帮助。让我们继续,你说的两个实体是指iterable的两个级别?