2011-05-01 4 views
2

나는 비슷한 질문을 찾고 나에게 도움이되었지만 도움이되었지만 찾을 수 없다. 그래서, 내 질문은, 어떻게이 같은 다른 문장에서 생성 된 키워드를 포함 DB에서 문장 끌어 MySQL의 쿼리를 작성 :키워드 목록과 일치하는 문장을 선택하는 Mysql 쿼리

$tyrsena = "php statement for clause"; 
$ques = "SELECT * FROM question WHERE title IN '$tyrsena'"; 
$re = mysql_query($ques)or die(mysql_error()); 
while ($da = mysql_fetch_assoc($re)){  
     $sugg = $da['title']; 
     echo $sugg; 
} 
그래서

$tyrsena 것은 내가를 생성 할 필요가있는 문장입니다 키워드를 검색하고 해당 키워드와 일치하는 question 테이블의 제목을 일치 시키려고합니다.
내가 제시 한 코드는 작동하지 않습니다. 해당 코드가 100 % 동일 할 경우에만 해당 코드가 일치합니다.이를 달성하기 위해 상상해보십시오. 감사합니다 사람 :

답변

6

먼저 당신이 당신의 테이블에 "FULLTEXT"인덱스를 생성하고 (경기를 사용해야처럼 소리) 함수를 호출합니다.

할 일에 StackOverflow는 다음과 같은 두 가지 태그를 검색하고이와 관련된 질문과 답변 정독 :

  • 전체 텍스트 검색 또한
  • 당신이해야 할 것

    • MySQL의를 원본 문장을 단어 목록으로 토큰 화하여 쿼리에 보간하기에 적합합니다. 순진한 전략은 공백으로 나눠지며 결과로 나오는 각 용어에 대해 뒤 따르는 구두점을 제거하고 모두를 소문자로 변환하는 것입니다. (예를 들어 "시"가 보존됩니다.) 또한 "s"(아포스트로피 "s") 및 "not"의 모든 인스턴스와 유사한 공통 수축을 제거 할 수 있습니다. 덜 순진한 접근 방식이 적절할 것입니다. stemming

      일반적으로 키워드 검색에서 영어 문장에서 너무 많이 사용되는 "중지 단어"(예 : of, a, an)가 필터링됩니다. , by, for, in, it, ... 등 (간단한 웹 검색으로 2 ~ 300 권의 영문자 목록을 쉽게 찾을 수 있어야합니다.) (일부는 그 맨 아래에 나열되어 있습니다.

    +0

    Mysql에는 ft_stopword_file에 정의 된 전체 텍스트 검색을위한 기본 단어 목록이 내장되어 있으며 ft_min_word_len보다 짧은 단어도 무시됩니다. 사람들은 종종 이러한 설정을 비활성화합니다. 특히 제목과 같은 짧은 문자열에 대해서는 그렇지 않습니다. 예를 들어 "Let it be be"는 찾기가 불가능합니다. – piotrm

    +1

    답장을 보내 주셔서 감사 드리며 많은 도움을 얻었습니다. 이제 전체 텍스트 검색으로 조정하고 있습니다. 감사 :) – hayllone

    1

    을 시도해보십시오 :

    $tyrsena = "php statement for clause"; 
    $tyrsena = explode(' ', $tyrsena); 
    $tyrsena = implode("','", $tyrsena); 
    $ques = "SELECT * FROM question WHERE title IN '$tyrsena'"; 
    

    또는 빠른 :

    $tyrsena = "php statement for clause"; 
    $tyrsena = str_replace(" ", "','", $tyrsena); 
    
    +0

    이 쿼리를 실행할 때 오류가 발생합니다. 'SQL 구문에 오류가 있습니다. MySQL 서버 버전에 해당하는 설명서를 확인하여 올바른 구문을 사용하여' php ','statement ','for ','clause ''1 행째 ' – hayllone

    +0

    '$ ques'의 결과는 무엇입니까? – hsz

    +0

    '$ re = mysql_query ($ ques) 또는 die (mysql_error()); while ($ da = mysql_fetch_assoc ($ re)) { $ sugg = $ da [ 'title']; echo $ sugg; }' – hayllone

    관련 문제