Lucene のあいまい検索を使用したいと思います。これは、ある種のレーベンシュタインのようなアルゴリズムに基づいていると理解しています。かなり高いしきい値 (つまり、"new york~0.9") を使用する場合、最初に編集距離を計算してから、それが 0.9 に対応するものよりも小さいかどうかを確認するか、それが明らかになった場合にアルゴリズムを遮断しますか?ドキュメントがクエリと厳密に一致していませんか? レーベンシュタインアルゴリズムでそれが可能であることを理解しています。
1572 次
1 に答える
2
ドキュメントがクエリとそれほど厳密に一致しないことが明らかになった場合、アルゴリズムを遮断しますか?
いいえ。表示するコードは、FuzzyTermEnum の 57 ~ 59 行目です。
int dist = editDistance(text, target, textlen, targetlen);
distance = 1 - ((double)dist / (double)Math.min(textlen, targetlen));
return (distance > FUZZY_THRESHOLD);
距離を計算し、それがしきい値よりも小さい場合に返されることがわかります。
それなのに、なぜあなたはこれを気にするのですか?用語が数千文字の長さでない限り、完全な編集距離の計算は非常に迅速です。
于 2010-11-28T19:30:07.310 に答える