2015-01-05 2 views
-1

MySQL 데이터베이스에서 사용자 입력 문자열을 추출하려는 작은 프로그램을 작성하고 있습니다. 하지만 정확히 일치하는 문자열을 찾고 있지 않습니다. 예를 들어검색어를 만들기 전에 맞춤법 검사

사용자가 amazon을 입력하면 데이터베이스에서 amazon을 추출해야합니다. 그러나 사용자가 amazonn 또는 amazo 또는 amozon을 입력하면이 단어는 맞춤법이 틀린 단어에 가장 가까운 단어이므로 amazon을 다시 검색해야합니다.

이것은 검색하는 동안 Google 제안과 비슷합니다. PHP에서 이와 같은 함수를 정의 할 여지가 있습니까? 사전을 가져 와서 비교해야합니까?

+0

그래서 "retrive"는 "retrieve"를 반환해야합니까? – danronmoon

+0

제대로 할 수있는 쉬운 방법이 없습니다. http://sphinxsearch.com/about/sphinx/ – MSTannu

+0

과 같은 것들을 살펴볼 것을 제안합니다. 나는 초보자이며 다음 명령어를 '% $ search %'에 비틀 거 렸지만 ... 또한 맞춤법이 틀린 단어 문제를 해결하지 못합니다 ... 불완전한 단어를 바로 잡습니다 ... – hnvasa

답변

2

당신은 사용자가 입력하는 문자열의 DB 문자열
How do I check if a string contains a specific word in PHP? 검색 두 가지 방법으로 strpos()를 사용할 수 있습니다.
그리고 다른 방법은 다음과 같습니다.
사용자가 DB 문자열에 입력 한 문자열을 검색합니다.

이 문제는 코멘트에 명시된 바와 같이 같은 amozon

아니면 levenshtein()를 사용할 수 있으며, similar_text()amazo 또는 amazonn하지만 당신은 단지 문자열의 외부에서 차이를 포함한다는 것이다. 제안
좋은 예제 코드 : 완전히 다른 방식으로 적용되어야한다
https://codereview.stackexchange.com/questions/27173/php-spell-checker-with-suggestions-for-misspelled-words

...
난 당신이 모두 검사를 원한다고 생각하지만, 모든 그래서 하나를 가져 보시기 바랍니다 dicitonary없이 어렵게 될 것입니다 ;)

+0

http://codereview.stackexchange.com/questions/27173/php-spell-checker-with-suggestions-for-misspelled-words의 예제는 좋지만 성능이 좋지 않다. 또한 그렇습니다. 좋은 대답입니다. +1 –

+0

성능이 문제라는 것을 알고 있지만, 일을 간단하게하고 싶었습니다. 예를 들어 복잡한 코드는 약간 이상하게 보였습니다.) – Mramaa

+0

언급 된 여러 기술에 감사드립니다. levenshtein()은 맞춤법이 틀린 문자열과 올바른 문자열을 비교하지만, 처음에는 올바른 문자열을 어디에서 얻을 수 있습니까? 쿼리는 사용자 입력입니다 ...! – hnvasa