2009-06-22 12 views
1

안녕하세요, 저는이 문제를 겪었습니다. 동의어와 맞춤법이 CSV [쉼표로 구분 된 값] 인 쿼리 또는 텍스트 및 표 2가있는 MySQL DB 테이블 1이 있습니다. 이제 표 1의 검색어가 표 2의 동의어 또는 맞춤법과 일치하는지 테스트하고 싶습니다. 그런 다음 별도로 선택합니다.MySQL 표 1 및 표 2의 키워드 검색/비교 :

예 :

표 1 행 : "내가 무엇을 할 수, HIV AIDS의 병 들었다"

표 2는 적어도 표 2에 동의어 일치 표 1에 일치하는 단어가 있기 때문에 HIV, AIDS, 암, TB는 수두는 ......

은 그래서 이것은 선택 될 것 .

MyISAM 테이블에

답변

0
select strings.text 
    from table1 strings 
where exists (
     select 1 
      from table2 sm 
      where instr(strings.text, sm.word) <> 0 
     ) 
2

:

SELECT * 
FROM table1 com, table2 syn 
WHERE MATCH (com.body) AGAINST(syn.list IN BOOLEAN MODE); 

이것은 당신이 com.bodyFULLTEXT 인덱스가없는 경우에도 작동하지만과 함께합니다 10 지수는 매우 빠를 것입니다. 이 같은

큰 따옴표로 동의어 목록을 포장하는 경우

:
"HIV", "AIDS", "chicken pox", "swine flu" 

만 전체 문구가 아니라 분할 즉, 일치됩니다.

+0

안녕하세요, Qns? 같은 트릭을 사용하면서 "오류 1210 (HY000) : 잘못된 인수를"로 가져 오기 전에이 테스트를 실제로 수행 했습니까? 인수가 좋지 않다고 생각하십시오. –