关于分析字符串生成搜索建议词的问题
来源:15-2 es完成搜索建议-搜索建议字段保存 - 2
ailiucy
2020-09-05
老师,上周问您的关于在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()
我在网上搜了一夜答案,尝试了各种办法,看了官方文档,还是没有解决,实在不知道怎么做了,希望老师帮帮我。
写回答
1回答
-
ailiucy
提问者
2020-09-05
老师,我把'filter':['lowercase']去掉就正常了,是不是新版本分析字符串的时候不能filter,使用tokenizer,才可以加这个参数啊。https://www.elastic.co/guide/en/elasticsearch/reference/current/indices-analyze.html
012020-09-07
相似问题