Im '문자열을 일치시키기 위해 mysql을 사용하여 전체 텍스트 검색을 시도합니다. 문제는 처음에는 이상한 결과를 반환한다는 것입니다.MySQL 일치 전체 텍스트
예를 들어, 문자열은 '2.0 TDI를 PASSAT'
AND MATCH (
records_veiculos.titulo, records_veiculos.descricao
)
AGAINST (
'passat 2.0 tdi' WITH QUERY EXPANSION
)
(나머지는 괜찮) 첫 번째 결과로이 반환 : 더이 이후
Volkswagen Passat Variant 1.9 TDI- ANO 2003
느릅 나무는 잘못 없다 이 예에서는 "2.0"입니다.
무엇이 될 수 있습니까?
편집 : 또한,이 때문에 아마도이 검색 방법 자체에 대한 가장 좋은 것, 대용량 데이터베이스 (500.000 기록까지 기대를) 할 것이다, 또는이 스핑크스와 같은 다른 검색 엔진을 설치하는 것이 좋습니다 것입니까? 또는 그렇지 않은 경우 관련 결과를 표시하는 방법은 무엇입니까?
EDIT2 : 질문에도 불구하고 기록에 대해서는 대답으로, MySQL의 구분 기호의 문제가 지속, 그래서 사람이 구분 기호를 탈출하는 방법에 대한 제안이있는 경우, 그것은에서 500 점을 높이 평가 가치가있을 것입니다 표시되고 말뚝. 나는 결과 집합을 증가 발견 sollution처럼, 내가 필요한 단어를 얻기 위해 엔진을 강제로 연산자를 사용하여, 인디애나의 BOOLEAN 모드와 쿼리 확장을 대체하는 것이 었습니다 : 그것은 전혀 해결되지 않았다
AND MATCH (
records_veiculos.titulo, records_veiculos.descricao
)
AGAINST (
'+passat +2.0 +tdi' IN BOOLEAN MODE
)
하지만, 최소한 결과의 관련성이 크게 변경되었습니다.
+1 이것이 왜 부정 투표를했는지 생각할 수 없습니다. 아주 사실. 'FULLTEXT' 인덱스에 대해 서버 와이드 기본 설정이 변경되지 않으면'2.0'이 이스케이프되는지 여부가 무시됩니다. – Orbling
@Yoda : 특히 'ft_max_word_len'에 대해 읽으십시오. http://dev.mysql.com/doc/refman/5.1/en/fulltext-fine-tuning.html – Orbling
문자를 이스케이프하는 방법에 대한 제안이 있으십니까? 나는 '\'을 사용해 보았는데 성공하지 못했습니다. – yoda