database.sarang.net
UserID
Passwd
Database
DBMS
ㆍMySQL
PostgreSQL
Firebird
Oracle
Informix
Sybase
MS-SQL
DB2
Cache
CUBRID
LDAP
ALTIBASE
Tibero
DB 문서들
스터디
Community
공지사항
자유게시판
구인|구직
DSN 갤러리
도움주신분들
Admin
운영게시판
최근게시물
MySQL Q&A 27268 게시물 읽기
No. 27268
검색을 위한 방법에 관해서 조언부탁드려요. (역인덱싱)
작성자
지우개
작성일
2007-12-20 02:51ⓒ
2007-12-20 03:12ⓜ
조회수
3,040

속담/명언/연설등을 검색하는 부분을 구현하는데 검색된 컬럼은 약 1~3KB 정도 되는 text 타입입니다.

레코드는 30만개가량되고요.


처음에는 그냥 LIKE "%검색어%" 식으로 하였는데 데이타 양이 늘어나면서 점점 늦어지더라고요.

Q6600 , 4GB , SCSI 시스템에서 십여초가 넘어갈때가 있는데

그것보다 이게 여러곳에서 요청이 누적되면 쿼리를 끝내지못하고 계속 자원만잡아먹고 서버가 맛이갑니다.


일단 서버튜닝은 튜닝대로 하고있는중인데 근본적인 LIKE 검색을 바꿔보려고 연구중입니다.

웹검색엔진에 많이 사용되는 형태소분리한후 역인덱싱하는 방법도 사용해봤는데 이게 원하는결과가 정확히 안나오네요.


예를 들어


"너그럽고 상냥한 태도, 그리고 사랑을 지닌 마음, 이것이 사람의 외모를 아름답게 하는 말할 수 없이 큰 힘 인 것이다."


라는 문구를 찾기위하여


"말할 수 없이 큰 힘 인 것이다."


라는 검색어로 검색을 합니다.

이건 형태소 파싱해서 넣을때도 애매하고 입력되는 검색어도 뛰어쓰기등으로 에메해지더라고요.

억지로 "말할" "없이" "큰" "힘" "것이다" 등으로 파싱했다 하더라도 어순에 따른 문제로

"큰힘 없이 말할 수 없다" 등과 같이 전혀 다른 문구가 검색되버립니다.

물론 속도는 형태소로 파싱되어 입려된 테이블에(약 500만컬럼) IN('검색어','검색어','검색어') 식으로 해도 비교할 수 없을정도로 빠르지만요.



질문 1.

100 말할

100 없이

100 큰

100 힘

100 것이다

위와 같이 역인덱싱을 했을때 있을때 단어순서에 따른 역인덱싱은 보통 어떻게 하나요?

단어배열을 고려 하지 않는다면 하나의 레코드가 많은 데이타를 갖고있고

그중 중요 키워드로만 검색하는 (ex, 웹페이지) 경우가 아니라면 별 의미가 없지 않을까 싶은데요.


질문2.

아무리 생각해도 제상황에는 중요도위주의 역인덱싱이 아닌 "토씨" 위주의 바이트검색을 하는게 맞는것 같은데

최소한 LIKE 문을 쓰지 않고 검색할 수 있는 방법은 없을까요? 최소한 LIKE "검색어%" 정도의 퍼포먼스라도

뛰어쓰기는 뛰어쓰기를 모두 제거한 검색전용 필드를 역정규화로 만들어서 사용한다고 해도

중간부터 나오는 단어를 검색어로 넣었을때는 답이 없더라고요.



저와 같은 상황에서 가장 좋은 검색방법에 대해서 조언부탁드립니다.

DB는 MySQL 5.1 을 사용하고있습니다.

[Top]
No.
제목
작성자
작성일
조회
27271MyISAM 타입의 db에서 특정 테이블에 lock해제 방법은? [1]
hhje22
2007-12-21
3624
27270[질문] mysql 자료 분리해서 저장 하는 솔루션이 있나요?
새벽소리
2007-12-20
2430
27269" InnoDB" & "Multiple Primary Key" & "AUTO_INCREMENT"
멋진현규
2007-12-20
2908
27268검색을 위한 방법에 관해서 조언부탁드려요. (역인덱싱)
지우개
2007-12-20
3040
27267mysql 데이타를 oracle로 옴기고 싶은데.. [1]
새내기
2007-12-18
2851
27266[질문] 케리터셋 변경하는 방법좀 부탁합니다. [1]
새벽소리
2007-12-17
5134
27265InnoDB, MyISam의 리플리케이션 [1]
고재철
2007-12-17
3609
Valid XHTML 1.0!
All about the DATABASE... Copyleft 1999-2024 DSN, All rights reserved.
작업시간: 0.017초, 이곳 서비스는
	PostgreSQL v16.2로 자료를 관리합니다