2013-06-24 6 views
5

मैं क्वेरी के सर्वोत्तम मिलान के लिए String[] में String देखना चाहता हूं। मैंने लेवेनशेटिन दूरी के बारे में सुना है। लेकिन मैं यह निर्धारित नहीं कर सकता कि मुझे इसकी आवश्यकता है या नहीं।सबसे कम लेवेनशेटिन दूरी? क्या मुझे इसकी ज़रूरत है?

मान लीजिए, मैं एक String query = "Examples" और

String[] arrayStr = new String[] {"The Examples String", "The Example String", "Example", "Examples String", "Example String", "Examplestring"}; 

अब है, मैं सबसे अच्छा मैच के रूप में String[] से Example प्राप्त करना चाहते हैं।

तो, क्या मुझे ऐसा करने के लिए लेवेनशेटिन दूरी की आवश्यकता है?

वैकल्पिक रूप से, अगर कोई मुझे जावा के लिए लेवेनशेटिन दूरी का तेज़ कार्यान्वयन इंगित कर सकता है, तो यह बहुत अच्छा होगा। मैं यह जांचना चाहता हूं कि यह मेरे पास मौजूद सभी प्रकार के तारों के साथ काम करता है या नहीं। (मूल रूप से मेरे पास 10k arrays से मिलान करने के लिए लगभग 10k तार हैं।)

+0

http://en.wikibooks.org/wiki/Algorithm_Implementation/Strings/Levenshtein_distance#Java – BackSlash

+0

Levenstein दूरी बस आप जोड़ने के लिए charactes की राशि है/एक स्टिंग को दूसरे में बदलने के लिए हटाएं/बदलें। यह वास्तव में मैच की गुणवत्ता के बारे में कुछ नहीं बताता है। जैसे। "उदाहरण" -> "बहुत लोकप्रिय स्टिंग ऑपरेशंस के उदाहरण" -> दूरी 34 और "उदाहरण" -> "अपेक्षित एम्पर्सेंड सबक" -> दूरी 18. मुझे संदेह है कि सबसे छोटी लेवेस्टीन दूरी आपको हमेशा बेहतरीन मैच देगी –

+0

@ मार्कोफोर्बर्ग आप गलत हैं, क्योंकि यह करता है। – BackSlash

उत्तर

6

हां, लेवेनशेटिन दूरी इसके लिए गोटो एल्गोरिदम है। आपको कम से, जावा सहित कई भाषाओं में कार्यान्वयन पा सकते हैं http://rosettacode.org/wiki/Levenshtein_distance

+2

जैसा कि @ मार्को-फोर्बर्ग ने इंगित किया है, अपाचे के स्ट्रिंगयूट्स में एक कार्यान्वयन है - http: // /commons.apache.org/proper/commons-lang/javadocs/api-3.3/org/apache/commons/lang3/StringUtils.html#getLevenshteinDistance(java.lang.CharSequence, java.lang.CharSequence) साथ ही साथ 'जारो विंकलर दूरी' एल्गोरिदम का कार्यान्वयन, http://commons.apache.org/proper/commons-lang/javadocs/api-3.3/org/apache/commons/lang3/StringUtils.html#getJaroWinklerDistance(java। lang.CharSequence, java.lang.CharSequence) – GreyBeardedGeek

संबंधित मुद्दे