Pencarian sisi klien teks lengkap berdasarkan js-search tetapi dengan tambahan dukungan pekerja web untuk kinerja yang lebih baik.
Lihat pencarian redux untuk contoh integrasi.
Atau instal sendiri dengan NPM:
npm install --save js-worker-search
Bercabang dari pencarian JS, utilitas ini membuat indeks pencarian dan menjalankan pencarian sebenarnya. Ini secara otomatis mendeteksi kemampuan lingkungan saat ini (browser atau Node) dan menggunakan implementasi berbasis pekerja web jika memungkinkan. Ketika tidak ada dukungan pekerja web yang tersedia, pencarian dilakukan di thread utama (UI).
SearchApi mendefinisikan metode publik berikut:
constructor ({ caseSensitive, indexMode, tokenizePattern })
Secara default, SearchApi
membuat indeks untuk mencocokkan semua substring. Anda dapat mengganti perilaku ini dengan meneruskan parameter bernama indexMode
. Nilai yang valid adalah INDEX_MODES.ALL_SUBSTRINGS
, INDEX_MODES.EXACT_WORDS
, dan INDEX_MODES.PREFIXES
.
Pencarian tidak peka huruf besar-kecil secara default dan dibagi pada semua karakter spasi. Baca di bawah untuk informasi lebih lanjut tentang menyesuaikan opsi default.
indexDocument (uid, text)
Menambahkan atau memperbarui uid dalam indeks pencarian dan mengaitkannya dengan teks yang ditentukan. Perhatikan bahwa saat ini uids hanya dapat ditambahkan atau diperbarui di indeks, tidak dihapus.
Parameter:
search(query)
Mencari indeks saat ini untuk teks kueri yang ditentukan. Hanya kata-kata yang cocok dengan semua kata dalam teks yang akan diterima. Jika string kueri kosong disediakan, semua uid yang diindeks akan dikembalikan.
Pencarian dokumen tidak membedakan huruf besar dan kecil (misalnya "pencarian" akan cocok dengan "Pencarian"). Pencarian dokumen menggunakan pencocokan substring (misalnya "na" dan "saya" keduanya akan cocok dengan "nama").
Parameter:
Metode ini akan mengembalikan array cairan.
terminate()
Jika pencarian berjalan di pekerja web, ini akan menghentikan pekerja tersebut untuk memungkinkan pengumpulan sampah.
Gunakan API seperti ini:
import SearchApi from 'js-worker-search'
const searchApi = new SearchApi ( )
// Index as many objects as you want.
// Objects are identified by an id (the first parameter).
// Each Object can be indexed multiple times (once per string of related text).
searchApi . indexDocument ( 'foo' , 'Text describing an Object identified as "foo"' )
searchApi . indexDocument ( 'bar' , 'Text describing an Object identified as "bar"' )
// Search for matching documents using the `search` method.
// In this case the promise will be resolved with the Array ['foo', 'bar'].
// This is because the word "describing" appears in both indices.
const promise = searchApi . search ( 'describing' )
Secara default, SearchApi
membuat indeks untuk mencocokkan semua substring. Anda dapat mengganti perilaku ini dengan meneruskan parameter indexMode
ke konstruktor seperti:
import SearchApi , { INDEX_MODES } from 'js-worker-search'
// all-substrings match by default; same as current
// eg "c", "ca", "a", "at", "cat" match "cat"
const searchApi = new SearchApi ( )
// prefix matching (eg "c", "ca", "cat" match "cat")
const searchApi = new SearchApi ( {
indexMode : INDEX_MODES . PREFIXES
} )
// exact words matching (eg only "cat" matches "cat")
const searchApi = new SearchApi ( {
indexMode : INDEX_MODES . EXACT_WORDS
} )
Secara default, SearchApi
memecah teks menjadi kata-kata (tokenisasi) menggunakan spasi dan baris baru sebagai karakter pembatas. Jika Anda ingin memberikan aturan pemisahan Anda sendiri, teruskan RegExp ke konstruktor yang mendefinisikan polanya, seperti:
// Custom tokenizer pattern to include all non alphanumerics as delimeters
// ex: searching "Swift" matches "Thomas Swift" and "Thomas (Swift)" but not "swiftly tilting"
const searchApi = new SearchApi ( {
indexMode : INDEX_MODES . EXACT_WORDS ,
tokenizePattern : / [^a-z0-9]+ / ,
} )
Pembersih default melakukan pencarian yang tidak peka huruf besar-kecil. Jika Anda ingin mengganti perilaku tersebut dan melakukan penelusuran peka huruf besar-kecil, setel bit caseSensitive ke true, seperti:
// custom sanitizer for case-sensitive searches
const searchApi = new SearchApi ( {
caseSensitive : true
} )
Secara default, utilitas pencarian hanya mengembalikan dokumen yang berisi setiap token pencarian. Ini dapat dikonfigurasi untuk mengembalikan dokumen yang berisi token pencarian apa pun.
// Change search behavior from AND to OR
const searchApi = new SearchApi ( {
matchAnyToken : true
} )
Perubahan dilacak di changelog.
js-worker-search tersedia di bawah Lisensi MIT.