我有一组我正在尝试索引的新闻文章。有时我会得到同样的文章,只有一点微小的变化(例如“九月”与“九月”)。在将文章加载到数据库之前,我想在加载它之前看看是否有任何类似的东西。
所以我尝试了这个(使用python elasticsearch_dsl库)
search = elasticsearch_dsl.Search(index=INDEX, doc_type=DOC_TYPE)
search = search.filter(match, text=article_text)
这有点用,直到我得到一篇很长的文章。然后我收到一条错误消息“maxClauseCount设置为1024”。
好吧,也许我的文字太长了。所以我这样做:text_bits = article_text.split()
if len(text_bits) > 1024:
article_text = " ".join(text_bits[:1023])
并且适用于包含大量文本的第一个项目,但不适用于第二个项目。所以也许我的原始猜测是关闭的,或者我可能没有做到这一点。
(顺便说一句,我看到文档中列出了“更像这样”的查询,但是当我尝试通过Sense使用它时,就像这样:
post /myindex/article/_search
{
"more_like_this" : {
"fields" : ["text"],
"like" : "mary had a little lamb"
}
}
我得到“未知搜索元素'more_like_this'”