schollz / closestmatch

Golang library for fuzzy matching within a set of strings :page_with_curl:
MIT License
420 stars 50 forks source link

Strange result on Closest. #8

Open azalio opened 6 years ago

azalio commented 6 years ago

I'm trying to find "Ричард Длинные Руки"

package main

import (
    "fmt"

    "github.com/schollz/closestmatch"
)

func main() {
    wordsToTest := []string{"Ричард Длинные Руки", "Ричард Длинные Руки — воин Господа", "Ричард Длинные Руки — барон", "Ричард Длинные Руки — сеньор", "Ричард Длинные Руки — паладин Господа", "Ричард Длинные Руки — бургграф", "Ричард Длинные Руки — оверлорд", "Ричард Длинные Руки — конунг", "Ричард Длинные Руки — герцог", "Ричард Длинные Руки — эрцгерцог", "Ричард Длинные Руки — эрцфюрст", "Ричард Длинные Руки — король", "Ричард Длинные Руки — король-консорт", "Ричард Длинные Руки — Властелин Багровой Звезды Зла", "Ричард Длинные Руки. В западне", "Ричард Длинные Руки — гауграф", "Ричард Длинные Руки — курпринц", "Ричард Длинные Руки — лорд-протектор", "Ричард Длинные Руки — император", "Ричард Длинные Руки — паладин Господа", "Ричард Длинные Руки — гроссграф", "Ричард Длинные Руки — фрейграф", "Ричард Длинные Руки — граф", "Ричард Длинные Руки — сеньор", "Ричард Длинные Руки — коннетабль", "Ричард Длинные Руки — маркиз", "Ричард Длинные Руки — майордом", "Ричард Длинные Руки — маркграф", "Ричард Длинные Руки — гроссфюрст", "Ричард Длинные Руки — князь", "Ричард Длинные Руки — виконт", "Ричард Длинные Руки — ярл", "Ричард Длинные Руки — эрцпринц", "Ричард Длинные Руки — властелин трех замков", "Ричард Длинные Руки — пфальцграф", "Ричард Длинные Руки — ландлорд", "Ричард Длинные Руки — вильдграф", "Ричард Длинные Руки — рауграф", "Ричард Длинные Руки — фюрст", "Ричард Длинные Руки — курфюрст", "Ричард Длинные Руки — гранд", "Ричард Длинные Руки — рейхсфюрст", "Ричард Длинные Руки — ландесфюрст", "Ричард Длинные Руки — принц", "Ричард Длинные Руки — принц-консорт", "Ричард Длинные Руки — вице-принц", "Ричард Длинные Руки — эрбпринц", "Ричард Длинные Руки — принц короны", "Ричард Длинные Руки — грандпринц", "Ричард Длинные Руки — принц-регент", "Ричард Длинные Руки — монарх", "Ричард Длинные Руки — штатгалтер", "Ричард Длинные Руки — принц императорской мантии"}

    bagSizes := []int{2}

    cm := closestmatch.New(wordsToTest, bagSizes)
    fmt.Println(cm.AccuracyMutatingWords())
    fmt.Println(cm.Closest("ричард длинные руки"))
    fmt.Println(cm.Closest("Ричард Длинные Руки"))

    fmt.Println(cm.ClosestN("Ричард Длинные Руки", 10))
}

But got

31.443298969072163
Ричард Длинные Руки — сеньор
Ричард Длинные Руки — сеньор
[Ричард Длинные Руки — сеньор Ричард Длинные Руки — паладин Господа Ричард Длинные Руки Ричард Длинные Руки — ярл Ричард Длинные Руки — граф Ричард Длинные Руки — гранд Ричард Длинные Руки — принц Ричард Длинные Руки — барон Ричард Длинные Руки — фюрст Ричард Длинные Руки — князь]

What I do wrong?