2012-10-09 4 views
0

현재 베타 모드 http://www.jobportfolio.co.uk에있는 검색 엔진 기반 사이트가 있습니다. 사이트에는 다음 필드 (job_company, job_title, job_description, job_location)를 통합하는 작업 테이블이 있습니다. 텍스트 필드 인 설명을 제외한 모든 필드가 Var입니다. 모든 필드는 FullText로 색인됩니다.전체 텍스트 검색 개선 MYSQL

현재 나의 접근 방식은 제목, 위치 및 회사를 기준으로 검색하는 것입니다. 이 잘 작동하는 것 그러나 설명 필드에 추가하여 검색 결과를 향상시키고 싶습니다. 그러나 문제는 설명 필드를 추가 할 때 검색이 더 오래 걸리는 것 같습니다. 12000 개의 행만 포함 된 테이블이 있더라도 느리게 보입니다.

나는 결과

을 선택하는 쿼리에 대해 다음 MATCH를 사용하고
MATCH(job_posts.job_title, job_company) AGAINST('".$this->mysqli_escape($job_title)."' IN BOOLEAN MODE) 

사람이 검색의 성능을 개선하는 방법에 대한 의견이 있습니까?

+0

해당 필드를 다루는 하나의 전체 텍스트 색인이나 필드의 일부 또는 전체를 다루는 여러 전체 텍스트 색인이 있습니까? –

+0

또한 '부채꼴 모드'보다 더 많은 옵션이 있습니다. – Xeoncross

+0

필자는 PHPMYADMIN을 사용하고 각 필드에 대한 전체 텍스트 색인을 별도로 가지고 있습니다. 그들 모두를 포괄하는 하나의 색인을 갖는 것이 더 나은가? – ORStudios

답변

0

흠, 내 첫 번째 생각은 "외부"에서이 문제에 접근하는 것입니다. 여러 가지 필드를 사용하는 검색 양식을 사용하는 것이 맞습니까? 다른 열에서 각각 검색하는 4 개의 검색 문자열을 기꺼이 갖고 있다면 자체적으로로드가 줄어들 것이라고 생각합니다. 예 :

"위치"필드에 누군가를 입력하면 검색된 텍스트와 위치 필드 만 일치시키는 절이 쿼리에 추가됩니다.

누군가가 "설명"필드에 입력하면 검색 텍스트와 설명 필드가 일치하는 절이 쿼리에 추가됩니다. 그렇지 않으면 설명 필드와 아무 것도 일치하지 않습니다.

텍스트를 한 곳으로 입력하고 "모든 가능한 필드"를 검색 할 필요가없는 경우이 솔루션은 누군가가 설명 텍스트에서 구체적으로 검색 할 때까지 추가 속도 저하를 방지합니다. 따라서 쿼리 속도는 검색 자의 필요에 따라 다릅니다.

+0

내가 무슨 뜻인지 알 것 같아. 현재 위치 필드를 검색하는 경우 위치를 검색하면 분당 2 개의 양식 필드가 있습니다. 설명 필드가 완료되면 다른 필드를 검색합니다. – ORStudios

+0

예. 그러나 위에서 언급 한 SQL 스 니펫 인 'MATCH (job_posts.job_title, job_company) AGAINST ('{$ string} ''BOOLEAN MODE에서 ')는 입력 한 문자열이 동시에 나열된 모든 필드와 비교된다는 것을 의미합니다. 많은 문맥에서 이것이 필요하며 그렇게하지 않으면 검색이 의미가 없을 것입니다. 기본값은 항상 모든 필드를 검색하는 경우 성능이 저하됩니다. –