2016-09-02 2 views
0

내 사이트의 작고 간단한 검색 도구의 경우 검색 조건에 따라 가장 관련있는 행을 찾기 위해 MySQL의 일치 검색을 사용합니다. 이제이 쿼리를 사용합니다 :MySQL 검색이 단어의 일부와 일치합니다.

SELECT * FROM mytable WHERE MATCH (name,description) AGAINST ('".$term."*' IN BOOLEAN MODE) 

예를 들어, 'sys'를 검색하면 검색어에 시스템이나 시스템과 같은 단어가 표시됩니다. 내가 갖고 싶어하는 문제는 검색 용어가 '시스템'일 때 '시스템'이라는 단어로 결과를 얻고 자하는 정확한 단어 '시스템'만으로 결과를 얻는다는 것입니다. 게다가.

이미 문서를 확인했지만 해결 방법을 찾지 못하는 것 같습니다. 전에 누군가가 이것에 빠졌습니까?

+0

이것은 불가능합니다. 그것에 대해 생각 해봐. 다음과 같이 정의한다 :'''시스템''으로 시작한 검색은''시스템 ''으로 시작한 모든 레코드와''시스템 스툴 '' , etc ... mysql은 결국''s' '로 검색어를 주면''system' '이 필요하다는 것을 알아 내야 만합니까? – vaso123

+0

나는 이해한다. 그러나 이것이 어떻게 이루어질 수 있을까요? – Mikelo

+0

마지막 글자 또는 마지막 글자를 자르거나 첫 번째 3 단어를 사용합니다. 잘 모르겠습니다. 논리가 무엇입니까? – vaso123

답변

0

댓글에 약간 깁니다.

당신이 요구하는 것은 일반적으로 전체 텍스트 검색 엔진에서 두 가지 방법 중 하나로 구현됩니다. 보다 일반적인 방법은 용어에 대한 동의어 목록입니다. 이것들은 "시스템"과 "시스템"이 같은 것이라고 말할 수 있습니다.

내가 아는 한, MySQL은 동의어 목록을 지원하지 않습니다. 동의어 값을 대체하기 위해 데이터 또는 쿼리를 사전 처리하여 성가신 방식으로 직접 구현할 수 있습니다.

두 번째 방법은 형태소 분석이라고합니다. 이것은 단어를 "루트"형식으로 변환하므로 "시스템"은 "시스템"의 복수로 인식되고 두 개는 일치합니다. 스테이밍은 쿼리에서만 적용 할 수 있습니다. 또는 진정으로 야심 차게도 문서 저장 영역에 적용 할 수 있습니다. 문제는 모호합니다. 영어 (및 다른 언어)는 형태소 분석이 이치에 맞지 않는 예외로 채워집니다.

관련 문제