2012-06-11 2 views
0

나는 최근에 질문에 답했다. 그 코멘트 섹션에서 나는 대답 할 수없는 다른 사용자의 질문을 선택했다. Fuzzy Regex 필터를 사용할 때 관련도 찾기

Searching for a product even if code is misspelled

은 '큰'데이터 소스를 필터링하는 정규 표현식을 사용하는 퍼지 검색 매개 변수, 어떻게 '관련성'또는 '최고의 경기'에 대한 값을 할당하는 방법에 대한 갈 것을 감안할 때?

필터가 올바르게 작동하지만 제공된 검색 문자열에 가장 가까운 값과 가장 가까운 값을 식별 할 수있는 방식으로 필터를 적용하는 방법을 모릅니다.

이 경우 가장 가까이에있는 문자열이 정확히 일치합니다 ('+'문자가 존재하지 않는다고 가정하면 일치하는 것이 가장 가깝습니다). 가장 멀리, 즉 최악의 일치는 일치하지 않는 가장 큰 수의 일치하지 않는 문자가됩니다.

인수를 피하기 위해 검색 패턴에 '+'와 '*'를 혼합하여 사용하는 퍼지 검색이 있다고 가정 할 수 있습니다. X+HG*UPO+Z* 또는 그 라인을 따라 무엇인가.

목표는 문자열 길이 비교를 사용하지 않는 것입니다. 내가 대답 한 질문에서, 데이터는 항상 어쨌든 항상 같은 길이가되도록 거의 보장되었다.

답변

0

Levenshtein distance 또는 비슷한 것을 계산할 수 있습니다. Approximate string matching on Wikipedia이 도움이 될 수 있습니다.

+1

자세한 내용은 [this so answer] (http://stackoverflow.com/a/5859823/724357)를 참조하십시오. –

+0

훌륭하고 정확하게 내가 찾고있는 것이 었습니다. LDistance 계산은 검색 문자열과 찾은 문자열 간의 일치 정도를 나타냅니다. 감사. – Nevyn

관련 문제