新手问题 ElasticSearch 相关问题

karrra · 2015年11月16日 · 最后由 karrra 回复于 2015年11月18日 · 2348 次阅读

因为业务需求所以研究了好久,不过相关资料真的不太多,只好来求助

一共有四个 model

Product Iterm Artist Tag

Tag 和其他三个 model 互相关联 客户端上用的搜索接口,通过关键字可以搜索任意 model 的 name 字段,然后关键是如果搜索匹配到的是 tag,就要返回相对应的其他三个 model 的数据,这种情况不知道该怎么配置?

然后就是模糊匹配的问题,不知道为什么搜中文可以,英文就不行,不知道是不是哪里配错了,比如搜索广可以找到广州,可是搜 a 就找不到 abc 想要的效果是像官网那样的

具体的代码和配置都没有,别人想帮也没辙

请问楼主,搜 a 为什么就能搜到 acb 呢,你应该不知道分词的原理吧,比如"hello world",搜"hello"或"world",就能搜到,而不是搜"h",这不是 sql 的 where 语句。

#2 楼 @hfpp2012 可是 elasticsearch 官网上的搜索就可以实现这种效果?

#1 楼 @suupic 实在是不知道该怎么写,所以就不好贴代码了抱歉

es 不是关系型数据库,如果想用 tag 搜其他的模型,可以在建立 mapping 的时候把 tag 放到其他的 index 里面,然后 tag 标签就可以作为搜索条件了,搜英文的时候需要设置相应的分词规则,因为 es 全文搜索是基于倒排表的,建议楼主先简单看看 es 全文的原理

#4 楼 @karrra 这个是另外的功能,叫搜索提醒建议 es 有提供这个功能的

#5 楼 @dy1901 非常感谢,我再研究一下 #6 楼 @hfpp2012 谢谢,继续研究

需要 登录 后方可回复, 如果你还没有账号请 注册新账号