Я пытаюсь сделать запись для рукописных документов с возможностью поиска. Некоторые из них очень неясны время от времени, и я ищу наиболее эффективный способ захвата их в базе данных, но все же могу искать термины, используя любую из возможных ветвей букв/слов.
Моя нынешняя идея ниже... но я думаю, что запрос, ищущий "Tom Sawyer", будет очень медленным, чтобы добиться такого. Кто-нибудь знает, как лучше всего это сделать?
Table: FullTexts FullTextID FullText 0001 This text was written by T{*1}m {*2} 0002 This document was even more {*1} to read Table: Changes DocID ChangeID ChangeIter ChangeText 00001 1 1 i 00001 1 1 o 00001 1 2 Sawyer 00001 1 2 Sayor 00002 1 1 fun 00002 1 1 hard 00002 1 1 messy
... или, возможно, только измененная таблица FullTexts со всеми вариантами, объединенными между {}, а затем сканированными с использованием выражений Perl в предложении WHERE?
заранее спасибо
Mysql и regex являются субоптимальными инструментами для такого поиска.
Вы генерируете варианты, как вы упомянули в вопросе, и анализируете весь текст в n-граммах. Затем вы загружаете их в поисковую систему, которая использует n-граммы в качестве входных данных, а не сырой текст.
DBIx::NoSQL
может стоить посмотреть