Fuse.js
Fuse.js — это вам не это. Это, блджад, библиотека для нечёткого поиска на JavaScript, которая, по заверениям разработчиков, такая лёгкая и быстрая, что аж в трусах тесно. На самом деле, конечно, всё не так радужно, но об этом позже.
Суть да дело[править]
Представьте себе ситуацию: сидите вы, такой весь из себя кулхацкер, попиваете кофеёк, и тут вам прилетает задача: «Сделай-ка, братишка, поиск по базе данных, да чтоб не как у людей, а чтоб он искал даже если юзер — дегенерат и пишет с ошибками». А база-то, на минуточку, не какая-нибудь там MySQL с её православным LIKE, а грёбаный JSON, вываленный из какого-нибудь NoSQL-говна. И что делать? Правильно, гуглить. И вот тут-то на сцене и появляется Fuse.js, весь такой в белом (на самом деле в чёрном, потому что тёмная тема — для илиты).
Fuse.js обещает, что найдёт всё, даже если вы ищете «Ктулху фхтагн» по базе данных с рецептами борща. Ну, почти всё. На самом деле, если вы совсем уж упоролись и написали «Ктулх», то Fuse.js, скорее всего, пошлёт вас на йух. Но если опечатка не такая фатальная, то шансы есть.
Под капотом у этой колымаги[править]
А под капотом там, на самом деле, не волшебство, а вполне себе прозаичный алгоритм, основанный на всяких там расстояниях Левенштейна и прочей матанской ереси, которую нормальные люди забывают сразу после сдачи экзамена. Говорят, что работает быстро. Врут, конечно, но не сильно. Если данных не слишком много, то действительно летает. А если у вас там «Война и мир» в JSON-формате, то Fuse.js, конечно, не сдохнет, но и кофеёк вы успеете допить, и покурить, и даже, возможно, поспать.
Анонимус рекомендует (или нет)[править]
Использовать ли Fuse.js? Ну, тут как посмотреть. Если вам нужно быстро прикрутить поиск к какому-нибудь небольшому проекту, то почему бы и нет? В конце концов, это лучше, чем писать свой велосипед с блекджеком и шлюхами. Но если у вас серьёзный проект, где важна производительность и точность поиска, то лучше всё-таки посмотреть в сторону чего-нибудь более солидного. Например, Elasticsearch. Или, на худой конец, Sphinx. Но только не это поделие, ради всего святого!
Ссылки[править]
- Официальный сайт — там всё на англицком, но вы же у нас не быдло, правда?
- Репозиторий на GitHub — можно посмотреть исходники и даже, о ужас, форкнуть!