https://github.com/magiclen/node-fast-string-search
Fast search substrings in a string by using N-API and boyer-moore-magiclen.
https://github.com/magiclen/node-fast-string-search
c nodejs string-search
Last synced: about 1 year ago
JSON representation
Fast search substrings in a string by using N-API and boyer-moore-magiclen.
- Host: GitHub
- URL: https://github.com/magiclen/node-fast-string-search
- Owner: magiclen
- License: mit
- Created: 2017-06-22T07:01:54.000Z (almost 9 years ago)
- Default Branch: master
- Last Pushed: 2023-10-30T12:19:21.000Z (over 2 years ago)
- Last Synced: 2025-03-24T17:55:21.951Z (about 1 year ago)
- Topics: c, nodejs, string-search
- Language: C
- Homepage:
- Size: 688 KB
- Stars: 22
- Watchers: 2
- Forks: 2
- Open Issues: 3
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
Fast String Search
=================================
[](https://github.com/magiclen/node-fast-string-search/actions/workflows/ci.yml)
This module can search substrings in a string by using N-API and boyer-moore-magiclen. The result of benchmark shows that this module is **10 times faster** than the `indexOf` function of a Node.js string.
## Initialization
Import this module by using `require` function.
```javascript
const fss = require("fast-string-search");
```
## Usage
### indexOf
Full text search in a string.
```javascript
const a = fss.indexOf("coocoocoocoo", "oocoo"); // [1, 4, 7]
```
You can also set the offset of characters and the number of substrings you want to find.
```javascript
const a = fss.indexOf(source, pattern, offset, limit);
```
The default value of `offset` is `0`, and the default value of `limit` is `1000`.
### indexOfSkip
Normal text search in a string.
```javascript
const a = fss.indexOfSkip("coocoocoocoo", "oocoo"); // [1, 7]
```
### lastIndexOf
Full text search from the end of a string.
```javascript
const a = fss.lastIndexOf("coocoocoocoo", "oocoo"); // [7, 4, 1]
```
### utf16IndexOf/utf16IndexOfSkip/utf16LastIndexOf
```javascript
const a = fss.utf16IndexOf(Buffer.from("coocoocoocoo", "utf16le"), Buffer.from("oocoo", "utf16le")); // [1, 4, 7]
```
## Tests
To run the test suite, first install the dependencies, then run `npm test`:
```bash
npm install
npm test
```
## Benchmark
To run the benchmark suite, first install the dependencies, then run `npm run benchmark`:
```bash
npm install
npm run benchmark
```
Here is my result,
```bash
Full Text Search
- 87 milliseconds
✓ natively search text(indexOf) (87ms)
- 7 milliseconds
✓ Use FSS to search text
Normal Text Search
- 35 milliseconds
✓ natively search text(indexOf)
- 46 milliseconds
✓ natively search text(RegExp) (46ms)
- 6 milliseconds
✓ Use FSS to search text
```
## License
[MIT](LICENSE)