2016-08-03 2 views
0

웹 호스팅을 사용하기 때문에 전체 텍스트를 ft_min_word_len으로 설정할 수 없습니다.
mysql 매칭은 전체 텍스트없이 해시 태그처럼 선택하십시오.

DB 필드
해시 - VARCHAR (256)/utf8_general_ci

DB 입력 값 예
| #abc |
| #abC# 123 |
| # 123 |
| #abC# 123 #abcd |
| # 1234 | | # 12345 | |

나는 결과
를 '# 123'검색 할 #abC# 123 |
| # 123 |
| #abC# 123 #abcd |

PHP는

$word = $mysqli->real_escape_string($_POST['word']); 
mysqli_query($mysqli, "... where (p.hashtag REGEXP '^(.*?(\\\b$word\\\b)[^$]*)$') ... "); 

나는 systax보다 싶습니다.

추가 코멘트
DB 입력 값 자세한 내용
ID | 제목 | 기술 | hastag | viewCnt ...
1 | 텍스트 1 | text0001 | # 123 | 0
2 | 텍스트 2 | text0002 | # 123 #abc | 0
3 | 텍스트 3 | text0003 | # 12345 | 0
...

답변

0

당신은 당신이 사용하는 테이블에 해시 태그 값과 ID 당 하나 개의 행이있는 테이블을 가지고 데이터 구조를 수정해야합니다.

그러나 어떤 경우에, 당신은 당신이 like을 사용하여 원하는 일을 할 수 있습니다

select hashtag 
from db 
where concat(hashtag, '#') like concat('%', $search, '#%'); 
+0

감사합니다! 그러나 일하지 않습니다. 검색 결과 0. – Integral

+0

@Integral. . . 죄송합니다. 나는 와일드 카드를 버렸다. –

+0

감사합니다. 성능 구현을 위해 색인을 적용 할 수 있습니까? – Integral

관련 문제