Спасибо всем за отклик.
Очевидно, я нахожу решение, установив плагин Classic Editor
https://en-gb.wordpress.org/plugins/classic-editor/
Это предотвращает отключение php-кода.
Если вы столкнулись с подобной проблемой, вы можете попробовать эту
Простым случаем является инвертированный индекс.
Самый простой алгоритм прост:
Детали - это то, где все становится сложно, но основы те же.
Под "нормализовать и фильтровать" слова я имею в виду такие вещи, как преобразование всего в нижний регистр, удаление общих «стоп-слов» (the, if, in, a и т. д.), возможно «выделение корней» (удаление общих суффиксов для глаголов, множественного числа и т. д.).
После этого у вас есть уникальный список слов для файла, и вы можете построить на его основе свой индекс.
Существуют оптимизации для уменьшения объема памяти, методы проверки местоположения слов ("это" рядом с "тем"в документе, например).
Но это основной способ работы.
Вот действительно базовое описание; для более подробной информации вы можете прочитать этот учебник (бесплатный онлайн): http://informationretrieval.org/ ¹
1). Для всех файлов создайте index. Индекс состоит из всех уникальных слов, которые встречаются в вашем наборе данных (называемом «корпусом»). С каждым словом связан список идентификаторов документов; каждый идентификатор документа относится к документу, содержащему это слово.
Варианты: иногда при создании индекса вы хотите игнорировать стоп-слова («a», «the» и т. д.). Однако вы должны быть осторожны («быть или не быть» - это настоящий запрос, состоящий из запрещенных слов).
Иногда вы также ограничиваете слова. Это больше влияет на качество поиска на неанглийских языках, где в большей степени используются суффиксы и префиксы.
2) Когда пользователь вводит запрос, найдите соответствующие списки и объедините их. Если это строгий логический запрос, процесс довольно прост - для И, идентификатор документа должен встречаться во всех списках слов, для ИЛИ, по крайней мере, в одном списке слов и т. Д.
3) Если вы хотите ранжировать свой результатов, есть несколько способов сделать это, но основная идея состоит в том, чтобы использовать частоту, с которой слово встречается в документе, по сравнению с частотой, с которой вы ожидаете, что оно будет встречаться в любом документе в корпусе, в качестве сигнала что документ более-менее актуален. См. Учебник.
4) Вы также можете сохранять позиции слов для определения фраз и т. Д.
Большая часть этого не имеет отношения к поиску на рабочем столе, поскольку вас больше интересует отзыв (все документы, содержащие термин), чем ранжирование.
¹ ранее на http://www-csli.stanford.edu/~hinrich/information-retrieval-book.html ,
Вы всегда можете посмотреть что-нибудь вроде Apache Lucene .
Apache Lucene - это высокопроизводительная полнофункциональная библиотека движка текстового поиска полностью написан на Java. Это технология, подходящая практически для любого приложения, требующего полнотекстового поиска, особенно кросс-платформенного.