Elasticsearch 比较长序列字符串与模糊查询
Elasticsearch compare long sequence strings with fuzzy query
我有两个相似的长字符串序列:
C50FD711C2C43287351892A4D82F44B055F048C46D2C54197AC1D1E921F11E6699C4057C4B93907518E6DCA51A672D3D3E419160DAE276CB7716D11B94D8C3BB2E4A591329B7AF973D17A7F9336342FFAAFD4D
和
C50FD711C2C43287351892A4D820B5EAC5F048C1E67CAC197AC1D1E921F11C3623C1DCD6493907518E6DCA18CD71016E7FD1160DAE276CB7716D11B94A6B762E4A591329B7AF973D17A7F9336342FFAAFD4D
它的距离是41。
我想找到那些彼此相似的字符串。我开始这样查询:
GET my_index/_type/_search
{
"query": {
"fuzzy" : {
"sequence.keyword": {
"value": "C50FD711C2C43287351892A4D820B5EAC5F048C1E67CAC197AC1D1E921F11C3623C1DCD6493907518E6DCA18CD71016E7FD1160DAE276CB7716D11B94A6B762E4A591329B7AF973D17A7F9336342FFAAFD4D",
"boost": 1.0,
"fuzziness": 50,
"prefix_length": 10,
"max_expansions": 200
}
}
}
}
我试过sequence.keyword和序列,该字段是文本类型和关键字类型。
但是,它没有在我的索引中找到其他类似的序列字符串。为什么?
答案很简单。允许的最大编辑距离为 2(如 source code for the Fuzziness
class
中所示
您可以尝试使用更简单的值,如果您索引 AAAAAA
并尝试使用 fuzziness: 3
搜索 AAABBB
,您将一无所获。
我有两个相似的长字符串序列:
C50FD711C2C43287351892A4D82F44B055F048C46D2C54197AC1D1E921F11E6699C4057C4B93907518E6DCA51A672D3D3E419160DAE276CB7716D11B94D8C3BB2E4A591329B7AF973D17A7F9336342FFAAFD4D
和
C50FD711C2C43287351892A4D820B5EAC5F048C1E67CAC197AC1D1E921F11C3623C1DCD6493907518E6DCA18CD71016E7FD1160DAE276CB7716D11B94A6B762E4A591329B7AF973D17A7F9336342FFAAFD4D
它的距离是41。 我想找到那些彼此相似的字符串。我开始这样查询:
GET my_index/_type/_search
{
"query": {
"fuzzy" : {
"sequence.keyword": {
"value": "C50FD711C2C43287351892A4D820B5EAC5F048C1E67CAC197AC1D1E921F11C3623C1DCD6493907518E6DCA18CD71016E7FD1160DAE276CB7716D11B94A6B762E4A591329B7AF973D17A7F9336342FFAAFD4D",
"boost": 1.0,
"fuzziness": 50,
"prefix_length": 10,
"max_expansions": 200
}
}
}
}
我试过sequence.keyword和序列,该字段是文本类型和关键字类型。 但是,它没有在我的索引中找到其他类似的序列字符串。为什么?
答案很简单。允许的最大编辑距离为 2(如 source code for the Fuzziness
class
您可以尝试使用更简单的值,如果您索引 AAAAAA
并尝试使用 fuzziness: 3
搜索 AAABBB
,您将一无所获。