使用Elasticsearch和AngularJS UI bootstrap typeahead构建自动完成功能。几乎已经完成,但我无法在下拉列表中显示结果。
当我按下字母a时,下拉列表中出现的内容我知道有关于该字母的建议是:
[object Object]
这是我的控制器代码
$scope.getSuggestions = function(query) {
$scope.isSearching = true;
return searchService.getSuggestions(query).then(function(es_return){
var phrases;
var phrases = es_return.hits.hits;
return $scope.autocomplete.suggestions = phrases;
$scope.isSearching = false;
});
};
这是我的html表单
<form ng-submit="search()" class="form-horizontal col-md-8 col-md-offset-2" id="hp-search-form">
我正在使用ES match_phrase_prefix
查询以及Shingles
分析器,该分析器运行良好 - 在Sense中获得预期结果。如果我去ES的Sense插件,我在键入&#34; a&#34;时会收到很多回复,所以我知道这部分工作的ES部分。 UI bootstrap typeahead我哪里出错?
答案 0 :(得分:0)
考虑到以下几行代码,您的方法存在两个问题:
library(dplyr)
library(tidyr)
library(stringi)
Monthlyresults %>%
gather(Startdate, value, -Code) %>%
mutate(Startdate =
Startdate %>%
stri_sub(2) %>%
as.numeric) %>%
right_join(Generaldata)
return $scope.autocomplete.suggestions = phrases;
$scope.isSearching = false;
作为数组,因此您将获得phrases
作为输出。使用[object Object]
替换它或检查您的控制台返回的内容。所以将代码更改为:
phrases[0]