복붙노트

[SQL] 바로 단어를 검색 MYSQL | 철자 오류를 수정

SQL

바로 단어를 검색 MYSQL | 철자 오류를 수정

내가 좋아하는 단어의 목록을 포함하는 테이블 사전을 가지고 :

   ID|word
   ---------
    1|hello
    2|google
    3|similar
    ...

그래서 누군가가 같은 텍스트를 쓴다면 원하는

"안녕하세요 구글 비슷한 엔진을 찾고 있어요."

지금은 그렇지 않은 경우가해야,이 데이터베이스에 존재하는 경우 모든 단어를 확인하려면 나에게 단어에 대한 유사한 단어를 얻을. 예를 들어 : 헬기 = 안녕하세요, simlar = 유사 gogle = 구글. 글쎄, 난 맞춤법 오류를 수정합니다. 내 데이터베이스에서 나는 모든 영어 단어의 전체 사전을 가지고있다. 나는 나에게 도움이 될만한 어떤 MySQL의 기능을 찾을 수 coudn't. LIKE 내 상황에서 helpfull 없습니다.

해결법

  1. ==============================

    1.이 당신이 원하는 원하는 대략 않는 기능이지만, 집약적이고 쿼리 속도가 느려집니다. 당신은 당신의 상황에서 사용할 수 있습니다, 내가 전에 그것을 사용하고 있습니다. 그것은 Levenshtein라고. 당신은 여기에서 그것을 얻을 수있는 방법 MySQL의에서 levenshtein 기능을 추가?

    이 당신이 원하는 원하는 대략 않는 기능이지만, 집약적이고 쿼리 속도가 느려집니다. 당신은 당신의 상황에서 사용할 수 있습니다, 내가 전에 그것을 사용하고 있습니다. 그것은 Levenshtein라고. 당신은 여기에서 그것을 얻을 수있는 방법 MySQL의에서 levenshtein 기능을 추가?

  2. ==============================

    2.당신은 음성 학적으로 비교 SOUNDEX () 함수를 사용할 수 있습니다

    당신은 음성 학적으로 비교 SOUNDEX () 함수를 사용할 수 있습니다

    쿼리는 뭔가를해야한다 :

    select * from table where soundex(word) like soundex('helo');
    

    이것은 당신에게 안녕하세요 행을 반환합니다

  3. ==============================

    3.당신이하고 싶은 퍼지 검색이라고합니다. 여기 문서화 MySQL의에서 SOUNDEX 함수를 사용할 수 있습니다 :

    당신이하고 싶은 퍼지 검색이라고합니다. 여기 문서화 MySQL의에서 SOUNDEX 함수를 사용할 수 있습니다 :

    http://dev.mysql.com/doc/refman/5.7/en/string-functions.html#function_soundex

    당신은 같을 것이다 쿼리 :

    사전 SELECT * FROM 곳 SOUNDEX (워드) = SOUNDEX (: yourSearchTerm)

    yourSearchTerm 매개 변수 값 : ... 검색어가 결합된다.

    다음 단계는 구현와 MySQL의 Levenshtein 기능의 사용을 시도하는 것입니다. 하나는 여기에 설명되어 있습니다 :

    http://www.artfulsoftware.com/infotree/qrytip.php?id=552

    당신은 또한이 기본적으로 제공하는 탄성 검색으로 전체 텍스트 검색을 목표로하는 데이터베이스로 찾고 고려해 볼 수 있습니다 :

    https://www.elastic.co/guide/en/elasticsearch/reference/current/query-dsl-fuzzy-query.html

  4. from https://stackoverflow.com/questions/35212058/mysql-search-for-right-words-fixing-spelling-errors by cc-by-sa and MIT license