Дано: есть построчно куча словосочетаний: Маша пошла в лес В лесу было холодно корзинка с грибами голодный волк ... таких вот словосочетании очень много, а точнее 250кк. И есть запрос (напишу SQL чтоб было понятно): %маш% and %лес% or %лес% and %холод% ... (порядок слов не важен!!!!) Задача: Вытащить строки содержащие условие запроса. Варианты решения: 1. Засунуть в Mysql FULLTEXT, проиндексировать и вытаскивать себе на здоровье Этот вариант не подходит так как объем базы вырастает просто до не реальных размеров 2. Использовать DBM и каким то хитрым образом задавать ключи к словам, и по этим ключам вытаскивать. Это круто и это мне подходит, но в данном случае если скажем значение содержит 1 слово не более можно присвоить каждой букве уник. цифру и так строить ключ, а если их три слова? Маша пошла в лес запрос: %маш% and %лес% or %лес% and %холод% ... (порядок слов не важен!!!!) первой идей было удалить пробелы и превратить в единый массив букв, а вот дальше я встал while все ключи смотреть на предмет вхождения в ключ сочетаний цифр ... короче на этом месте затырка. И еще: результат выборки может быть не в единственном числе, те строк может быть несколько содержащих эти слова или слово. Да и просто с одним словом были бы проблемы теже так как там есть еще же разные окончания, а нам нужны вхождения. Прошу помощи.
угу, индексы важны, индексы нужны вариант с фуллтекст поиском самый нормальный, т.к. без индексов перебирать каждую строку в поисках искомых - глупо и очень ресурсозатратно.