2012-06-30 5 views
0

내 사이트에서 검색 엔진을 최적화하려고합니다. 결과를 채우는 현재의 mySQL 쿼리는 '정상적으로 작동합니다.'하지만 정말로 그다지 훌륭하지는 않습니다. 예를 들어 이러한 쿼리는 데이터베이스의 일부이며 '이름'열에 저장되지만 검색 결과로 검색되지 않습니다 ("& M", "E.S.Y.", "DVS"). 그러나 "Exist"또는 "Hollywood Designs"와 같은 검색어는 예상대로 발견됩니다.일치하지 않음 mysql 쿼리가 예상대로 작동하지 않습니다.

아래의 쿼리를 수정하여 결과를 더 정확하게 채울 수있는 방법이 있는지 궁금 해서요. b/c 지금은 많은 결과가 나오지 않고 예상대로 작동하지 않습니다. 나는 이것에 어떤 도움을 주셔서 감사합니다. 또는 ("파일 ('$의 searchfor')에 대한 MATCH (키워드, 이름) FROM 키워드를 선택, 이름")

$ 결과 =는 mysql_query :

이것은 현재 내가 검색 결과를 채우는 데 사용하고 쿼리입니다 죽는다 (mysql_error());

+1

MySQL의 FULLTEXT 검색이 좋지 않기 때문에 전체 텍스트 검색 서버를 MySQL 대신 사용하는 것이 좋습니다. 나는 스핑크스를 추천한다. http://sphinxsearch.com/ –

답변

0

당신의 문제는 기본적으로 mysql에있는 단어 길이 제한과 관련이 있다고 생각합니다. 예 : A&M은 한 단어가 아니지만 두 개입니다 (&는 무시 됨). 일반적으로이 제한 (ft_min_word_len)은 3으로 설정됩니다.

이 MySQL 매뉴얼에서는 구성을 조정하는 방법을 볼 수 있습니다. 당신이 당신의 전체 텍스트 인덱스를 다시 인덱싱해야

  • 그렇지 않으면 검색이 변경되지 않습니다 : http://dev.mysql.com/doc/refman/5.5/en/fulltext-fine-tuning.html

    중요 사이드 참고 : ft_min_word_len 하나에 설정합니다.

  • 거대한 데이터 세트를 사용하는 경우이 변경으로 전체 텍스트 쿼리의 속도가 크게 저하 될 수 있음에 유의하십시오.
관련 문제