вопрос в тормозах при нескольких словах одновременно
т.е. задача - найти документы, в которых одновременно упоминаются однокоренные слова для aaa и для bbb
разбираю слова стеммером, нахожу id слов, формирую джойны ON wordid IN ()
все хорошо было на маленькой базе, когда объемы выросли, все стало безбожно тупить.
добавил в таблицу слов счетчик документов, (++ при индексации документа) - чтобы не делать count(*) при каждом формировании запроса
сортирую джойны по возрастанию - то есть сначала приджойнится слово с 1 документом, потом с 10 , потом со 100.
со временем пришлось свернуть джойны во вложенные запросы и добавить force index
JOIN (
SELECT DISTINCT iw0.documid
FROM s2iwords iw0
WHERE iw0.wordid
IN ( 1602, 73605, 2912644, 3182817, 28832 )
)iwtmp ON iwtmp.documid = dc.documid
JOIN iwords iw1
FORCE INDEX ( doc2 ) ON iw1.documid = iwtmp.documid
AND iw1.wordid
IN ( 1603, 1959742, 4326670, 1574411, 4394943, 1353379, 3280260, 1352665, 1352697, 3502846, 3502847, 3502848, 3960094, 4315186, 3491600, 1277157, 949812, 3580166, 3558453, 10771, 3573210, 2519998, 4230002, 11155, 3598851, 687017, 1033452, 2255697, 89053, 3639402, 3649210, 3665338 )
это позволило убрать ненужные тормоза, но остались "нужные" - если пользователь вводит слова "документ и договор" (по каждому индексированно миллион документов) результат будет неразумен по скорости.
Ситуация осложняется тем, что в некоторых случаях надо искать по всем миллионам документов, а в некоторых свой есть отбор всего сотни. Заранее предсказать этого нельзя - это конструктор.
Варианты: - административно запретить такой поиск. - найти еще варианты
Айфон мало держит заряд, разбираемся с проблемой вместе с AppLab
Перевод документов на английский язык: Важность и ключевые аспекты
Какие существуют виды рекламных бордов и как выбрать подходящий?
У меня есть таблица со следующими данными:
Хочу написать пакет для автогенерации сваггера, или что-то вроде того
Пытаюсь прочитать файл в котором написано: