2011-02-28 3 views
1

저는 작업 설명에 대한 데이터베이스를 가지고 있으며, 가능한 한 많은 작업 목록과이 설명을 일치시켜야합니다. 내 데이터베이스에는 키 (예 : Aircraft Pilot) 및 몇 가지 대체 타이틀 (Jet Pilot, Airliner Captain 등)으로 기본 직책이 있습니다.MySQL 데이터베이스에서 입력 문자열 내의 값을 검색하십시오.

내 문제는 내가 처리해야하는 많은 설명과 함께 제목에 너무 많은 정보가 포함되어 있습니다. 예를 들어 목록의 샘플 제목은 "747 항공기 파일럿"일 수 있습니다.

나는이 방법으로 100 % 정확도를 얻을 수 없다는 것을 알고 있지만 "747 항공기 파일럿"과 "항공기 파일럿"에 대한 설명을 각 조합에서 검색하지 않고 일치시킬 수있는 방법이 있습니까? 문자열에있는 단어들? 예를 들어 두 문자열 사이에 일치 비율을 지정하고 모든 비율이 일치하는 특정 비율을 반환하는 알고리즘이 있습니까?

답변

1

MySQL에서는 전체 텍스트 검색 기능을 사용할 수 있습니다. 좋은 자습서는 여기에서 찾을 수 있습니다 :

http://devzone.zend.com/article/1304

http://forge.mysql.com/w/images/c/c5/Fulltext.pdf

당신이 이런 식으로 쿼리를 수행 할 수

ALTER TABLE jobs ADD FULLTEXT(body, title); 

를 사용하여 전체 텍스트 인덱스를 추가 할 때 :

mysql> SELECT id, title, MATCH (title,body) AGAINST 
    -> ('Aircraft Pilot') 
-> AS score 
-> FROM jobs WHERE MATCH (title,body) AGAINST 
-> ('Aircraft Pilot'); 
+-----------------------------+------------------+ 
| id | title     | score   | 
+-----------------------------+------------------+ 
| 4 | 747 Aircraft Pilot ... | 1.5055546709332 | 
| 6 | Aircraft Captain ... | 1.31140957288 | 
+-----------------------------+------------------+ 
2 rows in set (0.00 sec) 
+0

매우 도움이 , 고맙습니다 – davka

관련 문제