当前位置:首页 > 探索 > 正文

Elasticsearch搜索Suggest功能优化

未知 2019-08-04 10:31

  挖掘近1个月搜索日志,按照每天独立IP进行统计频次,即每个IP用户天搜索同一关键词多次只记一次,用IP过滤也有其局限性,伪IP,动态IP,局域网共享同一公网IP,都会影响到基于IP来判断用户的准确性,你也可以使用sessionId或者userId来判断

  统计后搜索词频次之后,抽取搜索频次100(自定阈值)的词,同时对日志数据进行清洗,过滤去除大于10个字(去除太长的长尾词),单字和符号内容

  需要在suggest词库里面去掉误输入词,对于搜索频次高的词,可以挖掘其对应的正确词,通过同义词进行查询改写。

  误输入词同义词挖掘可以通过挖掘搜索session序列,使用word2vec训练来获取误输入词的同义词,通过分词器同义词设置,快三计划,对误输入词进行查询改写。

  纠错:能够对用户的输入进行拼写纠错(suggest建议优先prefix匹配,不宜过多提示,因此只需提供前缀匹配,中文拼音匹配即可)

  如:“天上人间” 分析为:“天上人间”、“天上”、“上人”、“人间” 四个词条。 要注意这4个词条还有顺序,也就是position分别为0, 1, 2, 3。FST实际上是前缀编码,这些词被顺序串联在一起进行编码,并记录了每个词条的相对位置,编码后形如:天上人间天上上人人间0 1 2 3

  特别注意,这时候所有的查找都只能从0位置的“天”开始。做completion suggest的时候, 输入的词条经过分析后, 必须有相同的前缀和相对位址。 因为你的搜索用的simple analyzer,当输入天的时候, 分析出来的是天 (0), 在FST里是从起始位置开始可以匹配到。其他输入“天上” “天上人” 都是从位置0开始的前缀,也都可以匹配。

  但是如果你输入“上”, simple analyzer分析出来的是上 (0), 去FST里查,第一个就不匹配,所以没结果。

  你会发现,上面用空格分隔的3个词,也可以match。 原因在于搜索用的simple analyzer是用空格一类的分隔符分词的,分词结果是: 天上人间天上上 0 1 2,顺着FST走下去,可以做到前缀匹配。

  总结来说,当使用completion suggester的时候, 不是用于完成 类似于关键词这样的模糊匹配场景,而是用于完成关键词前缀匹配的。 对于汉字的处理,无需使用ik/ HanLP一类的分词器,直接使用keyword analyzer,配合去除一些不需要的stop word即可。

  举个例子,做火车站站名的自动提示补全,你可能希望用户输入“上海” 或者 “虹桥” 都提示上海虹桥火车站“ 。 如果想使用completion suggester来做,正确的方法是为上海虹桥火车站“这个站名准备2个completion词条,分别是:

  因此想要实现completion suggest 中文拼音混合提示,需要提供三个字段,中文字段,采用standard分词,全拼字段,首字母字段,对汉字都采用standard分词,分词后对单字进行分词,确保FST索引的都是单字对应的拼音,这样应该就可以完成中英文拼音suggest

  第一步是先采用汉字前缀匹配的结果,使用全拼匹配也可以返回结果,但是存在同音字时,weight高的同音字会覆盖原来的字,导致suggest不准确

  第二部,当汉字匹配数量不够时,启用全拼匹配,可以达到拼音纠错补充效果,索引时只索引全拼拼音

  第三步:正常来说首字母拼音一般匹配不到内容,此时可以使用拼音首字母匹配,索引时只索引首字母拼音

  fuzzy模糊查询是基于编辑距离算法来匹配文档。编辑距离的计算基于我们提供的查询词条和被搜索文档。

  Complete suggest支持fuzzy查询,计算编辑距离对CPU消耗比较大,需要设置以下参数来限制对性能的影响:

  从搜索日志挖掘的Suggest词,可以根据搜索词的搜索频次作为热度来设置weight,Suggest会根据weight来排序。

  原文载于Elastic中文社区: 现代的搜索引擎,一般会具备Suggest As You Type功能,即在用户输入搜索的过程中,进行自动补全或者纠错。 通过协助用户输入更精准的关键词,提高后续全...

  问题背景搜索关键字智能提示是一个搜索应用的标配,主要作用是避免用户输入错误的搜索词,并将用户引导到相应的关键词上,以提升用户搜索体验。医口袋服务中存在数以百万计的内容,为了让用户快速查找到目标内容,我们可以基于solrcloud实现了内容搜索模块。为了提升用户的搜索体验和输...

  Elasticsearch 中文搜索时遇到几个问题: 当搜索关键词如:“人民币”时,如果分词将“人民币”分成“人”,“民”,“币”三个单字,那么搜索该关键词会匹配到很多包含该单字的无关内容,但是如果将该词分词成一个整词“人民币”,搜索单字如“人”字又不会匹配到包含“人民币”...

  让我消失吧!让你不再想起 你生命里曾出现过的 一个这样的男孩,曾难忘 你在我眼中是多么美丽 让我消失吧!在你的世界里不再出现 你的安静不会再被谁打扰 一个怎样的无意之间,我闯入了 你敞开的心扉 请关上那扇门,将我拒之 门外的我会远去,将不再回来 消失在人山人海 不让你见我,...

  一,摆放蛋皮,倒新兰奶油 二,放入烤箱烘焙 200摄氏度 30min 椭圆形葡式蛋挞皮也如上述操作,如下 成品如下

  不知道是自己退化了,还是我的控制欲作祟,从翔翔开始有自己的想法了以后,我们怼的次数越来越多,江苏快三,我感觉,有时候面对他的负面情绪,我自己越发像个孩子,和他吵架,他打我,我有时候会打回去,我总是在想,那个对孩子无限包容的妈妈呢,不见了 有时候觉得特别无力,愤怒的时候,我就...