검색과 검색어에 대한 이야기가 나와서, 전에 잠시 찾았던 링크를 올려봅니다.
제가 아는건 Mysql 밖에 없으므로 다른 DBMS에 대해서 알고 계신분들이 있으시면 추가로 올려주시면 좋겠네요.

우선 Mysql의 MyISAM 테이블에서 char,varchar, text 타입만 가능한걸로 알고 있습니다. 최소한 5.0버전 까지는요.

http://dev.mysql.com/doc/refman/5.0/en/fulltext-search.html

위에가 Mysql사이트의 도큐먼트이고

http://www.databasejournal.com/features/mysql/article.php/1578331
http://www.onlamp.com/pub/a/onlamp/2003/06/26/fulltext.html
http://www.phpfreaks.com/tutorials/129/0.php

위에가 이를 이용하는 방법들의 예입니다. 거의 같은 내용입니다.

우선 제가 이해하고 있는 내용을 혹시라도 모르시는 분들을 위해 적어보겠습니다. 어차피 다 위의 사이트에서 설명된 내용입니다.
검색을 위해서 특정 field(아마 게시판 같은 테이블이라면 제목, 본문 정도를 걸겠죠)에 있는 문자열을 특정 문자들로 쪼갭니다.
이렇게 쪼개진 문자열들을 [검색대상단어]로 보면 될거 같습니다.
이때 기준문자는 빈문자열,하이픈 등등이 있는걸로 압니다. 정확히는 모릅니다.
그리고 문자열을 쪼갤때 조건이 조금 있습니다.

show global variables like 'ft%' 해보시면 아시겠지만,
ft_boolean_syntax         + -><()~*:""&|
ft_max_word_len           84            
ft_min_word_len           1             
ft_query_expansion_limit  20            
ft_stopword_file          (built-in)

ft_min_word_len, ft_max_word_len 이란 글로벌 변수가 있습니다. 세션변수로도 지정 가능한지는 안해봤습니다.
이는 [검색대상단어]의 최소, 최대 길이입니다. 한글 같은 경우는 최소값이 1이어야 한문자 짜리도 검색 인덱싱이 됩니다.
그리고 ft_stopword_file이 있습니다. 우선 (built-in)으로 되어있는데, 이는 위의 Mysql공식 문서에서 Full-Text Stopwords를 보시면 목록이 있습니다. 이를 따로 지정할수 있습니다. 근데 어떻게 쓰는지는 아직 안해봤습니다.
Stopwords에 대한 설명은 아래의 원문과 같이 '검색에서 제외되는 단어'정도로 보면 되지 않을까요?

Common words such as “some” or “then” are stopwords and do not match if present in the search string.

이렇게 쪼갠 문자들로 인덱스를 구성합니다. 넘 간단하게 설명했나? ㅋㅋ
저두 자세히 아는 내용이 아니므로 패스..

이제 검색. 검색 쿼리를 어떻게 쓰는지는 위의 링크에 예제와 설명이 충분히 있습니다. 귀찮으므로 패스..
단 검색시 BOOLEAN MODE를 잘 이용하면 좀더 좋은 검색 결과를 얻어낼 수 있을것 같습니다.

SELECT dong FROM postcode2 WHERE MATCH (dong) AGAINST ('+구의* -구의1동' IN BOOLEAN MODE);

dong이 [검색대상단어]중에 '구의'로 시작하면서 '구의1동'은 안나오는 row 찾기.. 정도로 해석하면 될까요?
문서에 따르면 *이 뒤에 왔을때만 잘 된다고 합니다.

하긴 몇달 전만해도 검색을 like '%검색어%'로 했던 시절이 있습니다. 아무 생각없이...
row의 수가 몇백만건이 되자 엄청난 부담 발생. 검색기능 중지 라는 결과를 가져왔습니다.
인덱스가 있어도 저건 넘 심하게 돌겠죠. 앞에만 빠져도 그나마 나을텐데..
그리고 그냥 검색엔진을 도입했습니다.