제품 이름이있는 거대한 데이터베이스가 있습니다. 데이터베이스에 새 제품을 삽입하기 전에 제품이 이미 존재하는지 (즉, 동일하거나 매우 유사한 항목의 ID를 얻음) 같은지 알아 내기 위해 데이터베이스에 제품을 일치 시키려고합니다. 다른 설명이, 예를 들면 :PHP의 일치 이름
- 아이폰 4S
- 아이폰 4S
- 아이폰-4
은 내가에만 생성 할, automatically
일치에 해당 항목이 필요하지 않습니다 매칭 제안을 한 다음 감독하도록하십시오.
몇 가지 아이디어가 있습니다. 데이터베이스에서 관련 항목을 찾으려는 단일 제품 이름을 예로 들자. "apple iphone-4s".
- 아이폰-4
- 은하 S4
- 아이폰 3G
- 사과 나노
- 삼성 아무것도 정
특별한 교체 : 내 DB가 같은 것은 볼 수 있었다 "-", ","등의 문자 (apple iphone-4s -> apple iphone 4s 사과)을 입력 한 다음 문자열을 폭발시켜
array('iphone', '4s')
으로 만든 다음이 배열의 각 항목을 반복하여 데이터베이스에서 하나의 product-name과 비교하고 안타. 결과 :iphone-4s
2는galaxy s4
0 안타iphone 3g
는 1apple nano
는 1samsung anything 4s
1은
apple iphone 4s
< =>array('apple', 'iphone', '4s')
에 일치은 가장 많은 조회수에 대해 일치 항목을 정렬합니다. 즉, 관리자에게 제안 할 가능성이 가장 높은 일치는
iphone-4s
입니다.- 다음과 같은 시나리오로 인해 데이터베이스에 이미 저장된 이름에서 모든 공백과 특수 문자를 제거하는 것이 더 효과적 일 수 있습니다. 내 새 제품 이름은
apple iphone
일 수 있으며 저장된 데이터베이스 이름은.apple i-phone
이되어야합니다. 따라서 두 개가 아닌 한 개의 히트가 있습니다. 이미 저장되어있는 영숫자가 아닌 문자를 모두 제거하면 적중률이 증가 할 수 있습니다. 이 예제에서 저장된 데이터베이스 항목은appleiphone
이 될 것이므로 새 제품 이름apple iphone
을 폭발시킨 후 두 번의 히트가 발생합니다. - 또 다른 추가 사항으로 나는 그 (것)들을 걱정하지 않기 때문에 그 (것)들을 일치하기 전에 모든 이름에서 가능하게 색깔 etc.와 같은 재료를 제거하고 나가 가지고있다 어떤 색깔든지 2 개의 제품을 일치하고 싶으면 생각했다.
더 좋은 아이디어가 있습니까?
는
php의 'soundex'기능과 levensthein 또는 methaphone과 비슷한 기능을 살펴보십시오. 필자는 단어를 철자하는 방법을 알지 못하는 "퍼지 (fuzzy)"검색을 구현하기 위해 자주 사용합니다. 기본적으로 그것은 그들이 소리 나는 방식으로 단어를 비교할 수 있습니다. 그래서 "아이폰"과 "아이폰"과 같은 것들은 사실상 동일합니다. 그것은 당신이 구현하고자하는 것에 매우 편리합니다. – arkascha
그래, 그 기능을 알고, 거기에 'similar_text' 하나가 존재하지만 ... 단어의 순서가 다를 때 아주 다른 결과를 산출하기 때문에 나는 최고의 매너에 적용하는 방법을 모른다. '삼성 갤럭시 s4 미니'대'삼성 갤럭시 미니 -S4' 또는'갤럭시 미니 -S4' – tim
물론, 그것이 사실이며 그것은 의미가 있습니다. 그냥 공백으로 문자열을 분해하고 그 결과 단어를 알파벳순으로 정렬 한 다음 시도해 보시기 바랍니다. "사운드 트릭"을 사용하지 않아도 어쨌든 그렇게해야합니다. – arkascha