2013-03-20 1 views
-4
tag1 - Novel, My pession, Holi, Book, My book, Having book 
tag2 - Holi Novel, My pession, Book, My book, Having book 
tag3 - Romantic Novel, My Novel, Book, My book, Having book 
tag4 - Novel based, My Novel, Book, My book, Having book 
tag5 - Ovel based, My Novel, Book, My book, Having book, Novel 
tag6 - Based, My Novel, Book, Novel, Having book, Presume 

특정 단어. 그것은MySQL의 전체 텍스트 검색 내가 <code>Novel</code>을 가진 만 태그를 검색 할

+0

읽고 your_table FROM N

SELECT *이 : http://whathaveyoutried.com 당신은 정말 고려해야 –

+1

[정상화] (HTTPS : //en.wikipedia .org/wiki/Database_normalization). – rid

+0

예, 여기에는 세 개의 테이블, 즉'book','tag' 및'book_tag'이 있어야하며, 마지막 하나는 다른 두 개의 키와 외래 키를 가지고 있습니다. 그런 다음 이것을 수행하는 훨씬 더 빠른 방법으로'JOIN'을 사용하십시오. – halfer

답변

1

내가 일반적으로 다음 각 키워드를 저장하는 전체 텍스트 검색에서 검색 tag1tag5 해야

,Novel,My Passion,Holi, 

즉 쉼표 시작시 문자열의 끝에, 이제 대신 소설의 당신이 검색 할 수 있습니다 '%,Novel,%'LIKE 명령으로 입력하면 매력처럼 작동합니다. your_table FROM

+0

우리는 20 개의 lacs 레코드를 업데이트 할 수 없기 때문에이 작업을 수행 할 수 없습니다. – bhupendra

+0

샘플에서 간단한 업데이트 쿼리 업데이트 테이블 세트 column = ","+ column + ","및 레코드가 올바른 형식입니다. 또는 다른 주석가로서, 더 빨리 결과를 얻으려면 정상화해야합니다. TEXT 검색이 가장 느린 것을 기억하십시오. –

+0

방금 ​​다른 답변을 읽었지만 실제로 내 경험에 대한 조언을 따르는 것이 아니라 선택의 여지가 있습니다. :) 또는 정상화 방법으로 이동하십시오. –

1

SELECT * WHERE your_table FROM '신규'

UNION

SELECT * LIKE 피사체 WHERE 피사체 LIKE '소설 %'your_table FROM

UNION

SELECT * WHERE 주제가 '%, 소설, %'

UNIO 주제 LIKE '%가, 소설'

+0

고마워요.하지만 우리 데이터베이스가 너무 커서 Lac가 20 개 이상 있기 때문에 무거워요. 이 쿼리는 쿼리를 죽이고 40 초 이상 걸립니다. – bhupendra

2
WHERE 
    tag1 REGEXP '(^|,)[[:<:]]Novel[[:>:]](,|$)' AND 
    tag5 REGEXP '(^|,)[[:<:]]Novel[[:>:]](,|$)' 
+0

감사하지만 그것은 tag1과 tag5가 아닌 모든 태그를 검색하고 있습니다. – bhupendra

+0

@bhupendra, updated example,'tag1'과'tag5'는 열이라고 추측합니다. – rid

+0

@bhupendra 당신이 필요합니다'SELECT * FROM table WHERE (태그 '% NOVEL, %'또는 '% NOVEL %'와 같은 태그 또는 %, NOVEL % '와 같은 태그)' –

관련 문제