我已经创建了简单的相似性,它所做的只是返回doc.freq
。
"simple_similarity": {
"scripted",
"script": {
"source": "return doc.freq;"
}
}
索引foo-bar
中还有+-500k文档,其结构为:
{
"mappings": {
"properties": {
"name": {
"type": "text",
"similarity": "simple_similarity"
}
}
}
}
我正在使用的查询例如:
{
"query": {
"bool": {
"should": {
"match": {
"name": "Test Foo Bar Baz"
}
}
}
}
}
问题在于性能。
对于标准BM25
相似算法,查询时间大约需要5-10毫秒。
但是对于我的simple_similarity
算法,查询时间大约需要50毫秒,这很奇怪,因为它比BM25
简单得多。它甚至没有任何数学运算。
对此有什么解释吗?
已编辑。
Profile
API显示我的简单相似性脚本的score_count
等于501232,与term.docFreq
相同(索引中包含当前术语的文档数。 )
但是,score_count
的{{1}}等于10201。
有人知道为什么差异如此之大吗?