2010-07-24 6 views
0

URL 테이블이 있으며 "fogbugz"또는 "amazon"와 같은 키워드가 포함 된 URL을 찾아야합니다. 키워드가 URL의 아무 곳에 나 나타나면 그 결과가되고 싶습니다. MySQL - 지정된 단어가 포함 된 URL에 대해 URL 테이블을 검색해야합니다.

지금, 내가 노력하고있어 : URL이 색인 경우에도, 예상 느린

SELECT url FROM url WHERE url LIKE '%keyword%' 

합니다.

저는 스크립팅 방법을 포함하여이를 빠르게 색인화 할 수있는 대체 방법에 대해 열려 있습니다. 각 URL을 "/"다음에 "_ 또는 -"문자로 분리하여 별도의 url2 키워드 테이블에 저장하는 방법에 대해 생각했습니다. 이 방법을 사용하면 "http://www.foo.com/directory/article-name"과 같은 URL은 키워드로 "foo" "directory" "article" "name"을 갖게됩니다. 그냥 생각.

물론 MySQL에서이 작업을 수행하는 더 간단한 방법이 있거나 일반적으로 선호하는 경우가 있습니다.

이 문제에 대한 귀하의 제안을 부탁드립니다. 감사.

답변

1

전체 텍스트 검색을 시도 할 수 있습니다 (http://dev.mysql.com/doc/refman/5.1/en/fulltext-search.html). 단점은 대략적인 결과도 얻을 수 있기 때문에 결과에 대해 다른 단계를 거쳐 수행하고 원치 않는 결과를 찾아 내야 할 것입니다.

+0

방금 ​​url을 가진 MyISAM 테이블을 만들었고, '% whatever %'검색은 InnoDB에서하는 시간의 1/20의 시간이 걸립니다. – Sambo

+0

@Sambo : INNODB는 오버 헤드 트랜잭션, 관계형 무결성 등을 전달합니다. –

+0

+1 : 저를 때려 눕히세요. –

관련 문제