Skip to content

Trusow/s3e

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

11 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Smart search site engine

JavaScript/TypeScript плагин для преобразования текстового запроса в набор предустановленных фильтров.

Пример использования

import { S3e } from 'smart-search-site-engine'
import type { S3eFilters, S3eThreshold } from 'smart-search-site-engine/dist/types';

// Данные, из которых будет собираться набор фильтров при обработке запроса пользователя
const filters: S3eFilters[] = [
    {
        name: "clothes",
        options: [
            {
                value: "t-shirt", // строка, число или boolean
                descriptions: "футболка"
            },
            {
                value: "pants",
                descriptions: "штаны, брюки"
            }
        ]
    },
    {
        name: "material",
        options: [
            {
                value: "cotton",
                descriptions: "хлопок, хлопковый" // описания по умолчанию разбиваются по запятым, их не обязательно склонять, за редким исключением (об этом чуть ниже)
            },
            {
                value: "flax",
                descriptions: ["лен", "льна", "льняной"] // могут передаваться и массивом, обратите внимание тут идет склонение "льна", чем короче слово, тем больше вероятность, что нужно указать его склонение
            }
        ]
    },
    {
        name: "details",
        options: [
            {
                value: "short_sleeve",
                descriptions: "короткий рукав",
            },
            {
                value: "long_sleeve",
                descriptions: "длинный рукав",
            }
        ]
    }
];

// Настройка срабатывания
const thresholds: S3eThreshold[] = [
    {
        length: 4, // от 1 до бесконечности
        relevance: 50, // от 1 до 100
    },
    {
        length: 6,
        relevance: 60,
    },
    {
        length: 10,
        relevance: 70,
    }
]

/*
Приведенные настройки означают следующее
если длина слова описания будет
<= 4, то слово из описания должно минимум на 50% совпадать из слова из запроса
если < 6 то 50%
если < 10 то 60%
если >= 10 то 70%


*/

const se = new S3e(filters, thresholds); // конструктор может быть пустым
//const se = new S3e(); // так тоже можно
//const se = new S3e(filters); // и так

se.setFilters(filters); // в любой момент времени фильтры можно изменить
se.setThresholds(thresholds); // тоже самое относится и к трешхолдам
//se.setThresholds([]); // так установится дефолтное значение для срабатывания


// В запросе намеренно допущены опечатки
se.find("купить хлопковую футблоку с короктим рукавом")
/*
[
    {filter: 'material', value: 'cotton'},
    {filter: 'clothes', value: 't-shirt'},
    {filter: 'details', value: 'short_sleeve'}
]
*/

// Также есть метод для поиска с полезной для SEO информацией
se.findWithSeoInfo("купить хлопковую футблоку с короктим рукавом")
/*
{
    "filters": [
        {filter: 'material', value: 'cotton'},
        {filter: 'clothes', value: 't-shirt'},
        {filter: 'details', value: 'short_sleeve'}
    ],
    "unrecognizedWords": ['купить', 'с'] // список нераспознанных слов в запросе
}
*/

Подключение

NPM

npm i smart-search-site-engine

CDN

Также существует минифицированная версия

About

Умный поиск на сайте на стороне клиента

Topics

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors