2009-09-14 4 views
0

방금 ​​전에 훌륭한 검색 기능을 작성한 웹 사이트가 있습니다. 방금 악센트 부호가있는 DB에 몇 마디가 있다는 것을 알았습니다. 따라서 누군가가 검색 할 단어를 입력 할 때 물론 악센트 부호가 없으면 찾고있는 것을 찾지 못합니다.은 악센트 부호, 움라우트 등이있는 단어와 일치합니다. mysql/php

대부분의 검색 기능이이 문제를 지금까지 해결했습니다. 그들은 그걸 어떻게 햇어? 거기에 영리한 트릭이 있어야합니다. 대부분의 쿼리는 mysql의 MATCH 기능을 사용하지만 그 중 하나는 LIKE를 사용합니다.

답변

1

스키마에 collation을 설정하여 MySQL이 어떤 문자가 동등한 지 알 수 있도록해야합니다. 발음 구별 부호가있는 문자가 문자없는 문자 또는 다른 문자 시퀀스와 같은 것으로 간주되는지 여부는 언어에 따라 다르지만 액센트를 무시하기위한 시작점으로 utf8_general_ci를 시도하십시오 (UTF-8 문자 집합을 사용한다고 가정하면 정말 있어야합니다).

모든 문자열에 대해 동일한 데이터 정렬을 사용하면 비용이 많이 드는 인덱스 변환없이 데이터를 조인하고 비교할 수 있습니다.

+0

MySQL이 문자 집합과 데이터 정렬을 혼란스럽게 처리하는 방법을 종종 혼란스럽게 했음에도 불구하고 이것은 절대적으로 맞습니다. 이 둘은 매우 다르며, MySQL은 물을 미친 것처럼 muddies. – Eric