【发布时间】:2014-03-05 23:30:20
【问题描述】:
我在我的 Rails 应用程序中使用 Elasticsearch 和 Typeahead 来执行自动完成。我从这里得到了这个想法
我已正确配置了 elasticsearch 自动完成功能,因为当我直接通过浏览器访问它时它可以工作。但是,当我尝试使用 typeahead 从自动完成查询中调用显示数据时,它甚至不会在我的调试器中触发。这是我的表单和 javascript,其中 typeahead 被调用
表格
<script>
$('#autcomplete_search').typeahead({
highlight: true
},
{
name: 'apple_game',
remote: "/search/autocomplete?query=%QUERY"
});
</script>
<h1>Keyword</h1>
<form action="/search/keyword">
<div>
<%= text_field_tag :query, params[:query], class: "form-control", id: "autcomplete_search" %>
<br/>
<br/>
</div>
<div>
<input type="submit">/</input>
</div>
</form>
控制器
def autocomplete
es = ESClient.get_client
games = es.suggest index: 'games',
body: {
apple_game: {
text: params[:keyword],
completion: {
field: "title"}
}
}
render json: games
end
控制器方法的浏览器结果示例
{
"_shards": {
"total": 5,
"successful": 5,
"failed": 0
},
"apple_game": [
{
"text": "ma",
"offset": 0,
"length": 2,
"options": [
{
"text": "Macabre Mysteries: Curse of the Nightingale Collector's Edition HD",
"score": 1
},
{
"text": "Mad Cop - Police Car Race and Drift (Ads Free)",
"score": 1
},
{
"text": "Mad Freebording (Snowboarding)",
"score": 1
},
{
"text": "Mad Merx: Nemesis",
"score": 1
},
{
"text": "Mad River Whitewater Kayak Rush",
"score": 1
}
]
}
]
}
编辑 每当 typeahead 运行时,我还注意到控制台中出现以下错误
Uncaught Error: missing source
【问题讨论】:
-
你使用的是什么版本的预输入
-
我正在使用来自twitter.github.io/typeahead.js的v0.10.1
-
请发布您要提前输入的字段的映射
-
目前我的 JSON 格式如上所示。我希望预先输入以显示标记为
text的结果。但我也为我的 JSON 返回test = ["maps", "make", "made", "maop", "make me burgers"]尝试了以下格式 -
@JamesR 当 typeahead 方法运行
Uncaught Error: missing source时,我也收到以下错误。我试过到处找,但找不到该错误的任何参考
标签: elasticsearch bootstrap-typeahead typeahead.js typeahead