나는 MySQL의 전체 텍스트 검색을 지원하지 않는 RDS에서 InnoDB를 사용합니다. 나는 대안을 찾고있다. 내 응용 프로그램은 Heroku에 있으며 검색 기능을 제공하는 다양한 애드온을 고려했지만 매우 큰 회사 테이블 (~ 100M 레코드)을 보유하고 있으며 값이 비싸다고 생각합니다. 테이블의 한 필드 (회사 이름) 만 검색하면됩니다.MySQL에서 키워드 테이블 생성 (전체 텍스트 검색 대신)
따라서 나는 '키워드'테이블을 직접 작성하려고합니다. 본질적으로 이는 모든 회사 이름에 포함 된 모든 단어를 나열합니다. 그런 다음이 키워드와 company_id 간의 연관성을 보여주는 다른 테이블이 있습니다.
소리가 좋은가요? 더 좋은 대안이 있습니까?
키워드 표와 연결 표를 만드는 가장 효율적인 방법은 무엇입니까? 가능한 경우 T-SQL을 사용하여 작업을 수행하려고합니다.
동의. 모든 외부 텍스트 검색 엔진은 MySQL 기반 검색보다 빠르고 강력합니다. Sphinx는 다음 사이트에서 다운로드 할 수 있습니다 : http://sphinxsearch.com/downloads/release/ – vfedorkov
MySQL에서 알고있는 색인에 의존하지 않습니까? 예 : "단어 표"만 만들면 정말 지적인 것이 아닙니다. 그러나 damerau-levenshtein http://stackoverflow.com/q/14232851/318765를 사용하여 확장하면 비슷한 단어를 찾을 수 있습니다. 다음 단계에서는 "단어 그룹"("개 놀이"결과 "개", "개 놀이")가 포함 된 두 번째 표를 추가 할 수 있습니다. 따라서 전체 문장을 바탕으로 최상의 매칭 결과를 찾을 수 있습니다. 이러면 BM25와 같은 결과가됩니다. https://en.wikipedia.org/wiki/Okapi_BM25 개념의 질문. – mgutt
@mgutt, Damerau-Levenshtein 거리 계산을 사용하려고하면 색인을 생성 할 방법이 없습니다. 테이블의 모든 행에 대한 거리를 계산해야합니다. 사용해보기를 환영합니다. 그러나 'LIKE'% word % ''검색과 동일한 수준으로 검색을 수행하는 것이 비용이 많이 듭니다. –