Datatables большие данные json с интеллектуальным поиском, или серверная часть с регулярным выражением, или лучший подход?

Я создаю это приложение Библии с помощью Datatables.

Моя проблема в том, что данные большие. Всего около 500 МБ. Всего около 32 000 строк, но это абзацы текста с тяжелой разметкой html/css.

Поиск должен быть «интеллектуальным поиском» (частичное совпадение слов).

Похоже, есть 2 возможных варианта хранения данных:

  1. Я могу хранить данные в таблице mysql. Я знаю, как реализовать обработку на стороне сервера, но я не знаю, как реализовать поиск регулярных выражений. Здесь это было успешно сделано несколькими способами: https://datatables.net/forums/discussion/3343/server-side-processing-and-regex-search-filter/p1 (я недостаточно знаю php, чтобы понять, как это сделать).

  2. Я могу хранить данные в одном или, возможно, даже в нескольких файлах json. Затем попросите пользователя загрузить все один раз в локальное хранилище. Затем выполните интеллектуальный поиск Datatables в обычном режиме. Я не уверен, что поиск будет хорошим, хотя. Я попробовал это в автономном режиме, загрузив всего 50 МБ, и поиск уже довольно медленный. (Опять же, мои познания в программировании очень ограничены).

Пожалуйста, посмотрите и не стесняйтесь вести меня в правильном направлении :)

http://torah.byethost14.com/AdminLTE-master/pages/tables/_talmidimEdition.html


person BibleFarm.org    schedule 15.05.2016    source источник
comment
Вам не нужен/не нужен поиск регулярных выражений. Используйте полнотекстовый поиск, dev.mysql.com/doc/refman /5.7/ru/fulltext-search.html.   -  person chris85    schedule 15.05.2016


Ответы (1)


«Тяжелая разметка html/css»? Будете ли вы искать html-теги? Возможно нет. Так...

Создайте еще один столбец с чистым текстом — без разметки, без html, без css, без даже номеров стихов. (Номер стиха книги, вероятно, должен быть в отдельных столбцах.)

Затем добавьте индекс FULLTEXT к этому текстовому столбцу. Помните об ограничениях полного текста.

REGEXP работает медленно и всегда сканирует все строки в таблице.

Есть также несколько полнотекстовых поисковых систем, которые можно добавить в MySQL. (У меня нет совета относительно того, применимы ли они для вашего приложения.)

person Rick James    schedule 25.05.2016
comment
Разметка Heavy html/css, очевидно, из-за функции красных букв, а также другого текста, который будет выделен жирным шрифтом, курсивом и т. Д. И т. Д. Но вы правы, я не буду искать html-теги. Дополнительный (скрытый) столбец с чистым текстом для целей поиска означает дополнительные 32000 стихов из Библии в дополнение к уже имеющимся 96000, потому что в 3 столбцах отображаются 3 Библии. В любом случае, допускает ли FULLTEXT сопоставление нескольких слов и частичное совпадение слов? - person BibleFarm.org; 26.05.2016
comment
FULLTEXT может искать несколько слов, либо «требуя» все слова, либо упорядочивая по какой-либо встроенной метрике. Существует автоматический поиск по «стеммингу» (направленный на английский язык) и «по префиксу». - person Rick James; 26.05.2016
comment
Вся Библия состоит всего из 4 миллионов символов необработанного текста; это тривиальная сумма для добавления в качестве дополнительного столбца. Как ты дошел до 500мб? Вам может понадобиться флажок в строке «Цитата Иисуса»? - person Rick James; 26.05.2016