
NetGrep adalah porting eksperimental ripgrep pada Wasm menggunakan protokol HTTP. Ruang lingkup proyek ini adalah untuk menyediakan alternatif yang layak untuk mesin pencari berbasis indeks untuk aplikasi dengan database berbasis file kecil. Ini menggunakan garpu repositori ripgrep asli dengan perubahan yang cukup untuk membuatnya dapat dijalankan pada Wasm.
Saat ini NetGrep hanya akan memberi tahu apakah suatu pola hadir pada file jarak jauh yang memanfaatkan mesin pencari inti ripgrep . Ini terjadi saat file sedang diunduh untuk memaksimalkan kinerja.
Catatan Mencari posting di blog yang dibuat melalui generator situs statis adalah kasus penggunaan yang menarik untuk percobaan ini. NetGrep dapat dengan mudah digunakan untuk membuat mesin pencari real-time dari file post pos. Contoh langsung untuk perilaku ini dapat ditemukan di blog saya (Anda dapat melihat kode sumber).
Peringatan saat ini perpustakaan ini diekspor hanya sebagai ESM, sehingga bundler seperti webpack diperlukan untuk menggunakannya.
Perhatikan tutorial singkat ini mengasumsikan bahwa Webpack 5 adalah bundler yang digunakan dalam aplikasi di mana
netgrepakan diintegrasikan. Contoh lengkap tersedia dalam paketexample.
Pertama -tama instal modul:
# Using yarn
yarn add @netgrep/netgrep
# Using npm
npm install @netgrep/netgrep Bendera Eksperimen asyncWebAssembbly harus diaktifkan di dalam webpack.config.js :
module . exports = {
//...
experiments : {
// ...
asyncWebAssembly : true ,
} ,
} ; Maka akan dimungkinkan untuk mengeksekusi netgrep secara langsung sementara file WASM yang dibundel akan dimuat secara tidak sinkron di latar belakang:
import { Netgrep } from '@netgrep/netgrep' ;
// Create a Netgrep instance, here it's
// possible to pass an initial configuration.
const NG = new Netgrep ( ) ;
// Execute a Netgrep search on the url using
// the given pattern.
NG . search ( "url" , "pattern" )
. then ( ( output ) => {
console . log ( 'The pattern has matched' , output . result )
} ) ;
// It's possible to pass custom metadata during
// the search. These will be returned back in the result
// for convenience.
NG . search ( "url" , "pattern" , { post } )
. then ( ( output ) => {
console . log ( 'The pattern has matched' , output . result )
console . log ( 'Metadata' , output . metadata )
} ) ;
// There is a convenient method to do batched searches
// to multiple urls. Using `searchBatch` the resulting `Promise`
// will resolve only after the completion of all the searches.
NG . searchBatch ( [
{ url : 'url1' } ,
{ url : 'url2' } ,
{ url : 'url3' }
] , "pattern" )
. then ( ( outputs ) => {
outputs . forEach ( ( output ) => {
console . log ( `The pattern has matched for ${ output . url } ` , output . result )
} ) ;
} ) ;
// If you want to avoid waiting for the completion of
// all the searches, the method `searchBatchWithCallback` will
// execute a callback every time a search completes.
NG . searchBatchWithCallback ( [
{ url : 'url1' } ,
{ url : 'url2' } ,
{ url : 'url3' }
] , "pattern" , ( output ) => {
console . log ( `The pattern has matched for ${ output . url } ` , output . result )
} ) ; NetGrep berada di bawah lisensi MIT.