2016-05-15 1 views
0

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

Моя проблема в том, что данные большие. Всего около 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

+1

Вы не должны/не должны искать регулярные выражения. Используйте полнотекстовый поиск, http://dev.mysql.com/doc/refman/5.7/en/fulltext-search.html. – chris85

ответ

0

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

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

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

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

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

+0

«Тяжелая html/css разметка», очевидно, из-за функции «красной буквы», а также для текста, выделенного жирным шрифтом, курсивом и т. Д. И т. Д. Но вы правы, я не буду искать html-теги. Дополнительная (скрытая) колонка с чистым текстом, предназначенная для поиска, означает дополнительные 32000 библейских стихов, в дополнение к 96000 уже там, потому что 3 Библии отображаются в 3 колонках. В любом случае FULLTEXT допускает несколько слов и частичное совпадение слов? –

+0

'FULLTEXT' может искать несколько слов, либо« требующих »всех слов, либо упорядочивая некоторую встроенную метрику. Существует автоматическое «выведение» (ориентированное на английский) и «префикс» поиска. –

+0

Вся Библия - всего 4 миллиона символов сырого текста; это тривиальная сумма для добавления в качестве дополнительной колонки. Как вы добрались до 500 МБ? Вам может понадобиться флаг в строке для цитаты Иисуса? –