У меня есть таблица indx_0, где я выбираю все «pid» (идентификатор продукта) с «wid» (word id), группируя их по продуктам, которые соответствуют большинству слов. Теперь, поскольку фактические слова хранятся в другой таблице, называемой «windex», таблица indx_0 содержит только идентификатор продукта, соответствующий идентификатору слова.select query + join tables
Вот текущий запрос, который я использую для получения результатов.
SELECT pid, count(*) WordMatchCount
FROM indx_0
WHERE wid in (294, 20591, 330)
group by pid
order by WordMatchCount desc
limit 1000
Say I поиск «Карта памяти DDR» Я не получите результат, который содержит «DDR3» приоритет над любым другим ключевым словом, поскольку она ищет точное соответствие. поэтому «карта памяти ddr» и «карта памяти телефона» будут считаться равными, поскольку ни «ddr3», ни «phone» не равны ddr.
Я хочу использовать join и LIKE (или любой другой предпочтительный способ), чтобы «ddr» совпадал с «ddr3» или «ddr2» очень близко, чтобы расставить приоритеты по другим результатам, где нет близкого соответствия.
Вот структуры таблиц:
CREATE TABLE IF NOT EXISTS `windex` (
`word` varchar(64) NOT NULL,
`wid` int(10) NOT NULL AUTO_INCREMENT
PRIMARY KEY (`wid`),
UNIQUE KEY `word` (`word`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=834922 ;
CREATE TABLE IF NOT EXISTS `indx_0` (
`wid` int(7) NOT NULL,
`pid` int(7) NOT NULL,
UNIQUE KEY `wid` (`wid`,`pid`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1;
Возможно ли это?
спасибо!
пожалуйста menthion таблица структура должным образом – diEcho
добавлена структура таблиц – nick
нет никакого первичного ключа в 'indx_o' также сказать мне, что является родительской таблицей, а которая является дочерней таблицей..means в терминах' foreign key'. – diEcho