IN BOOLEAN MODE
모디파이어를 사용해서 불리안 전문 검색을 실행한다:mysql> SELECT * FROM articles WHERE MATCH (title,body)
-> AGAINST ('+MySQL -YourSQL' IN BOOLEAN MODE);
+----+-----------------------+-------------------------------------+
| id | title | body |
+----+-----------------------+-------------------------------------+
| 1 | MySQL Tutorial | DBMS stands for DataBase ... |
| 2 | How To Use MySQL Well | After you went through a ... |
| 3 | Optimizing MySQL | In this tutorial we will show ... |
| 4 | 1001 MySQL Tricks | 1. Never run mysqld as root. 2. ... |
| 6 | MySQL Security | When configured properly, MySQL ... |
+----+-----------------------+-------------------------------------+
+
와 –
연산자는 매치가 일어났을 때 존재해야 하거나 또는 존재하지 말아야 하는 단어를 각각 나타낸다. 따라서, 이 쿼리는 단어 “MySQL”는 존재하지만 “YourSQL”은 없는 모든 열을 추출하게 된다.- 이 검색은 50% 쓰레드홀드를 사용하지 않는다.
- 이 검색은 내림 차순 연관도 순서로 열을 자동 정렬하지는 않는다: 가장 높은 연관도를 가지고 있는 열은 “MySQL”을 두 번 가지고 있는 열이지만, 맨 처음이 아니라 맨 나중에 나오게 된다.
- 이 검색은 비록 검색 속도는 저하되지만
FULLTEXT
인덱스를 사용하지 않아도 동작을 한다. - 최소 및 최대 단어 길이 전문 파라미터가 적용된다.
- 스톱워드 리스트가 적용된다.
+
이 부호가 단어 앞에 나오면 그 단어는 반드시 리턴되는 각각의 열에 존재해야 한다는 것을 의미한다.
-
이 부호가 단어 앞에 나오면 그 단어는 반드시 리턴되는 어떠한 열에도 존재하지 말아야 함을 의미한다.
Note: -
연산자는 다른 검색어에 의해 매치되는 열을 배제하는 기능만 실행한다. 따라서, -연산자가 앞에 있는 검색어만을 갖는 블리안-모드 검색은 그 결과 값이 없게(empty) 된다.
- (연산자 없음)
디폴트로는 (+
또는 –
가 지정되지 않을 때) 단어를 넣는 것이 옵션 사항이지만, 단어가 있는 것이 우선 순위가 높게 된다. 이것은 IN BOOLEAN MODE
수정자 (modifier)가 없는 MATCH() ... AGAINST()
의 기능을 모방한 것이다.
> <
위의 두 연산자는 한 단어의 컨트리뷰션 (contribution)을 특정 열에 할당된 관련 값으로 변경하고자 할 때 사용된다. >
연산자는 컨튜리뷰션을 증가시키며 <
연산자는 그것을 감소시킨다. 아래에 있는 예문을 참조.
( )
괄호는 단어를 그룹화 해서 서브익스프레션 (subexpression)시킨다. 괄호화된 그룹은 네스티드될 수 있다.
~
단어 앞에 나오는 틸데 (tilde) 기호는 부정 연산자와 같이 동작을 하며, 그 단어의 컨트리뷰션이 해당 열과 부정 연관성을 갖도록 만든다. 이 연산자는 “노이즈 (noise)” 단어를 마킹 (marking)하는데 유용하다. 이와 같은 형태의 단어를 가지고 있는 열은 다른 열보다 우선 순위가 낮게 되지만, -연산자처럼 모든 것을 배제하는 것은 아니다.
*
별표 연산자는 트런케이션 (truncation) (또는 와잉드카드) 연산자와 유사한 기능을 실행한다. 다른 연산자와는 달리, 이것은 적용 단어 뒤에 표시 한다. 매치되는 단어는 *
연산자 앞에 있는 단어와 매치되는 것이 된다.
"
이중 인용 구호 연산자는 안에 있는 구문과 동일한 철자의 구문이 있는 열을 매치 시킨다. 전체 문장 엔진 (full-text engine)은 구문을 단어로 분리하고, 각각의 단어에 대해서 FULLTEXT
인덱스 검색을 실행한다.
'apple banana'
두개의 단어 중에 최소한 한 개의 단어가 있는 열을 찾는다.
'+apple +juice'
두 개의 단어 모두가 있는 열을 찾는다.
'+apple macintosh'
“apple”이 있는 열을 찾되, 그 열에 “macintosh”가 있으면 그 열을 상위로 랭크 시킨다.
'+apple -macintosh'
“apple”는 있지만 “macintosh”는 없는 열을 찾는다.
'+apple ~macintosh'
“apple”이 있는 열을 찾되, 그 열에 “macintosh”가 있으면 “macintosh”가 없는 열보다 순위를 아래로 만든다. 이 방식은 '+apple -macintosh'
보다 부드러운 방식인데, 그 이유는 “macintosh”의 존재가 아무것도 리턴하지 못하도록 하기 때문이다.
'+apple +(>turnover
“apple” 과 “turnover”, 또는 “apple” 과 “strudel” 을 갖고 있는 열을 찾되, “apple turnover”가 “apple strudel”보다 우선 순위를 높게 만든다.
'apple*'
“apple”로 시작되는 단어를 갖고 있는 열을 찾는다.
'"some words"'
"
’ 캐릭터는 구문을 한정하는 연산자 기호라는 점을 기억하자. 이 기호는 검색 스트링 자체를 인용하지는 못한다.'Databases' 카테고리의 다른 글
PHP Setup for IIS MySQL Root 패스워드 (0) | 2013.01.24 |
---|---|
FULL TEXT SEARCH 간단히 정리 (0) | 2013.01.09 |
LOAD DATA INFILE Syntax / Import .csv File (0) | 2013.01.08 |
Import CSV File Into SQL Server Using Bulk Insert (0) | 2013.01.08 |
UTF-8 데이터를 SQL Server에 저장하는 방법 (0) | 2012.12.26 |