2015-01-18 1 views
0

MySQL 데이터베이스에서 FULLTEXT 검색을 수행하는 간단한 PHP 스크립트가 있습니다. 나는 PHP 측에서 이것을 해결하기 위해 내가 MySQL 측에서 할 수있는 일이 많지 않은 것처럼 할 수있는 일이 있기를 바라고있다.PHP에서 MySQL FULLTEXT를 사용하여 공유 호스트에서 4 자 미만의 단어를 검색하십시오.

저는 현재 PHP 클래스에서 이것을 사용하고 있으며 내 로컬 호스트에서 100 % 작동하지만 공유 된 Godaddy 호스팅에 업로드 할 때 실패합니다.

$pieces = explode(" ", $searchstring); 
$searchwords = ''; 

foreach($pieces as $value) { 
    $searchwords .= '+'.$value.' '; 
} 

$sql = "SELECT * FROM items WHERE MATCH (ItemName, ItemDescription) AGAINST ('$searchwords' IN BOOLEAN MODE)"; 

나는이 문제에 대한 해결책을 많이 연구했지만 아직 답변을 찾지 못했습니다. 모든 문서 및 포럼에서는 my.ini 파일 ft_min_word_len = 4를 내 localserver에서 테스트 할 때 완벽하게 작동하는 ft_min_word_len = 0으로 변경하도록 제안합니다.

godaddy 공유 호스팅 계정에 프로젝트를 업로드해야하므로 my.ini 구성 파일을 변경할 수 없으므로이 오류와 관련된 작업이 필요합니다.

내가 달성하기 위해 노력하고 무엇을

예 :

검색 '아이폰 5 LCD'는 모든 '아이폰 4 홈 버튼' '아이폰 3가 표시됩니다 있도록'아이폰 '이 모든 결과를 반환 할 데이터베이스에 대한 원래 검색 쿼리에서 '5'와 'lcd'를 건너 뛰었 기 때문에 4 개의 문자보다 작습니다. ft_min_word_len이 ft_min_word_len = 0으로 설정되어 있으므로 로컬 사본에 'iphone 5 lcd'는 실제로 필요한 항목 만 반환합니다! 그것은 완벽하게 작동합니다! 나는 '5', '5___'또는 'LCD_'또는 'LCD *'또는 '5 *'와 같은 '5'와 같은 짧은 단어를 채우려고 시도했지만 작동하지 않습니다. 짧은 단어를 '덧붙이 기'제안했지만 어떤 문자를 사용해야하는지 설명하지 않은 해결책을 읽었습니다.

+0

유용하다고 생각되는 호스팅으로 전환하면됩니다. – Mihai

+0

나는 자신의 my.cnf 파일을 생성하고 홈 디렉토리에 넣을 수 있다고 생각한다. – Traxo

답변

-1

LIKE 절이 작동하지 않습니까?

는 PHP, 다음 쿼리 WHERE (COLUMNA LIKE '$ searchword %'OR COLUMNB LIKE '$ seachword %')

또는 단순히 단어보다 짧은을 제거하기 위해 PHP를 나 strlen를 사용에서 원하는 길이로 검색 단어를 잘라 원하는.

관련 문제