Frolics-это автономная, легкая, полнотекстовая библиотека поиска для приложений Frontend.
Frolics вдохновлен Elasticsearch и Lucence, основная реализация включает в себя алгоритмы обработки текста и структуру данных, такие как токенизация, Stemming и Inverted Index.
Когда docs предоставляются, Frolics создает соответствующие данные об индексе, которые широко используются в основных полнотекстовых поисковых службах, таких как Elasticsearch и Google Search.
С этого момента вы можете пропустить обременительный процесс установки для выполнения полнотекстового поиска, и что еще лучше, вам больше не понадобится бэкэнд для разработки такой функции.
Frolics здесь, чтобы помочь!
Перед установкой Frolics, пожалуйста, убедитесь, что ваша версия узла совместима. Узел V12+ в порядке, но узел V16 рекомендуется.
Тем не менее, узел V17+ имел проблему совместимости, когда я тестировал Frolics в ReactJS. Но узел V16 работал хорошо.
Однажды. Запустите npm install frolics в терминал.
Перед импортом требуются необработанные данные. Это должно выглядеть так:
const docs = [
{
id: 1,
body: 'this is a test full text'
},
{
id: 2,
body: 'can you can a can as a canner who can can a can',
},
];
Имейте в виду, что уникальный id и поля body текстового содержимого требуются, так как id различает каждый документ, а body - это содержание, которые необходимо анализировать и классифицировать текстовые данные для поиска.
В Additioal к id и body в качестве необходимых полей вы можете иметь несколько из них для разных функций. Например, если вы хотите предварительного изображения при поиске, вы можете изменить такие docs , как это:
const docs = [
{
id: 1,
body: 'this is a test full text',
// imagesURL field is totally optional, you can have different name and data structure
imagesURL: 'https://yourImage.com/img1.png',
},
{
id: 2,
body: 'can you can a can as a canner who can can a can',
},
];
После определения docs мы все готовы. Следующий шаг - использовать Frolics.
Frolics поддерживает синтаксис ES6, поэтому вы можете импортировать так:
import { createDTM, Stemmer } from 'frolics';
import { docs } from "../assets/document.js" // Don't forget the raw data
Теперь вы можете назвать createDTM как это:
const DTM = createDTM(docs);
createDTM является основной функцией, которая принимает docs и создает инвертированный индексный словарь.
Вы можете обрезать исходный ввод Stemmer , чтобы получить результаты поиска
const DTM = createDTM(docs);
const stemmedInput = Stemmer(input);
return DTM[stemmedInput]; // The result
Для получения подробного примера, пожалуйста, посетите папку «Пример».
То, что возвращает функция createDTM - это инвертированный индексный словарь. Он может быть преобразован в формат JSON, читаемый на человеке, с простым встроенным JavaScript функцией JSON.stringify Method.
Вы можете выбрать любой метод считывания файлов на основе ваших фреймворков и загрузить файл JSON, если существует, перед вызовом функции createDTM .