请稍等 ...
×

采纳答案成功!

向帮助你的同学说点啥吧!感谢那些助人为乐的人

关于分析字符串生成搜索建议词的问题

老师,上周问您的关于在ubuntu下elasticsearch5.1.1无法启动的问题,我找了一周答案,发现官网里说这个版本还不支持ubuntu18.04,所以,我就只好安装新的版本,es==7.8.0,es-dsl ==7.2.0,(es-dsl最新的版本是7.2.1)因为是新版本,所以有些地方旧版本的方法不再试用了。
在items.py中,要通过调用indices.analyze接口分析字符串返回搜索建议分词,旧版本是这样做的

words = es.indices.analyze(index=index, analyzer="ik_max_word", params={'filter':['lowercase']}, body=text)

而且,旧版本中,老师通过下面这种方法取index也不能用了

ArticleType._doc_type.index

进行链接的时候用的using方法好像也不对

es = connections.create_connection(ArticleType._doc_type.using)

看了官方文档,我尝试这样做,但是在debug的时候,还是在words=…这句代码出错。

es = connections.create_connection(ArticleType)
def gen_suggests(index, info_tuple):
    used_words = set()
    suggests = []
    for text, weight in info_tuple:
        if text:
            words = es.indices.analyze(index="jobbole", body={"analyzer": "ik_max_word", "text": "{0}".format(text)})
            anylyzed_words = set([r["token"] for r in words["tokens"] if len(r["token"])>1])
            new_words = anylyzed_words - used_words
        else:
            new_words = set()

        if new_words:
            suggests.append({"input":list(new_words), "weight":weight})

    return suggests

class CnBlogsAritcleItem:
	# ...
	def save_to_es(self):
		# ...
		article.suggest = gen_suggests(ArticleType._default_index, ((article.title, 10), (article.tags, 7)))
		article.save()

我在网上搜了一夜答案,尝试了各种办法,看了官方文档,还是没有解决,实在不知道怎么做了,希望老师帮帮我。

正在回答 回答被采纳积分+3

1回答

提问者 ailiucy 2020-09-05 14:21:59

老师,我把'filter':['lowercase']去掉就正常了,是不是新版本分析字符串的时候不能filter,使用tokenizer,才可以加这个参数啊。https://www.elastic.co/guide/en/elasticsearch/reference/current/indices-analyze.html

0 回复 有任何疑惑可以回复我~
  • bobby #1
    有没有具体的报错呢? 现在es7 已经取消了type这个概念了 ,网上的资料好很多都还是es6以及以前的版本
    回复 有任何疑惑可以回复我~ 2020-09-07 11:05:45
问题已解决,确定采纳
还有疑问,暂不采纳
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号