I have 3 tables: CV, CvSkill, Skill. CvSkill
is many-to-many map table between other two tables. So what I want to achieve is, when user searches for skill, using Sphinx to get all CVs related to searched skill. Also user can mistype something in skills. Sphinx must match entered skill by proximity and get maximally relevant skills' CV results.
I can't figure out how to configure sphinx (etc/sphinxsearch/sphinx.conf) to search this way.
Any suggestions?
CREATE TABLE `CV` (
`id` int(10) unsigned NOT NULL AUTO_INCREMENT,
`fullName` varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL COMMENT 'Ad, soyad'
) ENGINE=InnoDB AUTO_INCREMENT=55 DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci ROW_FORMAT=COMPACT;
CREATE TABLE `CvSkill` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`cvID` int(10) unsigned DEFAULT NULL,
`skillID` int(10) unsigned DEFAULT NULL,
PRIMARY KEY (`id`),
UNIQUE KEY `CS_UK1` (`cvID`,`skillID`),
KEY `skill_id` (`skillID`),
CONSTRAINT `CS_FK1` FOREIGN KEY (`cvID`) REFERENCES `CV` (`id`) ON DELETE CASCADE ON UPDATE CASCADE,
CONSTRAINT `CS_FK2` FOREIGN KEY (`skillID`) REFERENCES `Skill` (`id`) ON DELETE CASCADE ON UPDATE CASCADE
) ENGINE=InnoDB AUTO_INCREMENT=48 DEFAULT CHARSET=utf8;
CREATE TABLE `Skill` (
`id` int(10) unsigned NOT NULL AUTO_INCREMENT,
`name` varchar(255) NOT NULL,
`slug` varchar(255) DEFAULT NULL,
`logoImg` varchar(255) DEFAULT NULL,
`color` varchar(255) DEFAULT NULL,
PRIMARY KEY (`id`),
UNIQUE KEY `name` (`name`),
UNIQUE KEY `slug` (`slug`)
) ENGINE=InnoDB AUTO_INCREMENT=39 DEFAULT CHARSET=utf8;
SET FOREIGN_KEY_CHECKS = 1;
Thanks in advance