我正在开发一个自动完成功能,我打算在其中显示如下的查询建议:
住在{City_name}的学生[City_name可以包含城市列表中的值]
example_type 1:
住在新...的学生
[以下查询建议应弹出]:
住在 纽约 的学生 住在 New的学生 泽西
(查找不同的实体[这里是城市,体育(例如:“打篮球的学生”等)。)
example_type 2:
住在纽约并且玩耍的学生......
[以下查询建议应弹出]:
住在纽约的学生和玩 篮球
学生们 住在纽约和玩 棒球
等。
我尝试使用ElasticSearch构建实体索引的基本自动完成功能,这是一个gisted here。 (在我的例子中,使用river-plugin转储子/实体索引。)我天真地检查了嵌套类型和父/子关系,但无法确切地确定它是否适合我的要求。
我不确定如何索引这些(父)短语 子索引,用于启用自动完成搜索,并通过查询/搜索单个索引生成可能的建议树。
如果能得到一些帮助来解决这类问题,那就太好了。 提前谢谢!
答案 0 :(得分:0)
我会对短语进行索引,例如:
live in New york
live in New Jersey
play basketball
play baseball
然后在客户端做一些工作,弄清楚你已经在查询中开始了一个新的部分,然后只将新部分中的字母发送给ES进行预先完成。
这将需要前端的一些工作,但我可以看到工作。另一种选择是为typeahead的查询短语索引每个可能的变体,但我非常怀疑它是否可行。