2012-05-31 5 views
7

는 기본적으로 난 그냥 {"pie", "delicious", "test"}자바 : 누구든지 배열에서 문자열의 가장 일치하는 방법을 찾을 수 있습니까?

이 꽤 명백하다에 "delicous"을 발견, 예를 들어, String

의 가장 가까운 (반드시 정확하지 않음)를 찾을 수있는 방법을 찾기 위해 노력하지만,있어의 값 배열이 항상 별개의 것은 아닙니다.

이 문제를 해결하는 방법을 알려 주실 수 있습니까?

답변

17

"가장 가까운"을 정의하는 방법에 따라 다르지만 한 가지 공통적 인 방법은 Levenshtein Distance 점수를 사용하는 것입니다. Apache Commons에는 a method in StringUtils이 있습니다.

검색 방법은 기본적으로 다음과 같습니다. 지정된 입력에 대해 가장 작은 Levenshtein 거리를 가진 문자열을 컬렉션에서 찾습니다.

+0

감사합니다, 이것은 꽤 잘 작동하고 있습니다 :) chocolatedessert와 chocolatepie가 있고 chocolatedes를 입력하면 여전히 파이를 사용하는 것처럼 보이지만 여전히 이전보다 훨씬 좋습니다 : p 감사합니다. –

+0

두 번째 링크가 끊어졌습니다. 업데이트하십시오. (링크 일 가능성이 있습니다 - https://commons.apache.org/proper/commons-lang/apidocs/org/apache/commons/lang3/StringUtils.html#getLevenshteinDistance(java.lang.CharSequence,%20java.lang. CharSequence)) –

+0

@ KazekageGaara 감사합니다. –

2

Java 용으로 만들어진 것은 없습니다. SecondString 또는 FREJ과 같은 타사 라이브러리를 사용해보십시오.

2

Levenshtein Distance와 함께 사용할 수있는 또 다른 방법은 단어의 음성 표현을 먼저 취하는 것입니다. 이를 수행하는 알고리즘 중 하나는 Metaphone입니다.

user guide for Apache Commons Codec에는이 및 일부 다른 인코더에 대한 세부 정보가 있습니다.

관련 문제