# strip-for-search

> Utility that strips out most punctuation, extra spaces and diacritical marks. Used to make text pattern matching more reliable

Latest version **1.0.2** (published 2017-08-15) · MIT license · 0 weekly downloads

## Install

```sh
npm install strip-for-search
pnpm add strip-for-search
yarn add strip-for-search
bun add strip-for-search
```

## Health

**Score 15/100 (F)** — status: abandoned.

Positive: no vulnerabilities.

Warnings: low downloads; no types; no esm support.

Negative: abandoned; low maintenance score.

## Facts

| | |
|---|---|
| Version | 1.0.2 |
| Published | 2017-08-15 |
| First published | 2017-08-15 |
| Weekly downloads | 0 |
| License | MIT |
| TypeScript types | none |
| Module format | CommonJS |
| Dependencies | 1 |
| Known vulnerabilities | 0 |
| Install scripts | no |
| GitHub stars | 0 |
| Author | Jeff Friesen |
| Maintainers | jefffriesen |

## Links

- npm: https://www.npmjs.com/package/strip-for-search
- Repository: https://github.com/jefffriesen/strip-for-search
- Homepage: https://github.com/jefffriesen/strip-for-search#readme
- Issues: https://github.com/jefffriesen/strip-for-search/issues
- npm.io page: https://npm.io/package/strip-for-search

## Dependencies (1)

- [lodash](https://npm.io/package/lodash.md) ^4.17.4

## Recent versions

- 1.0.2 (latest) — 2017-08-15
- 1.0.1 — 2017-08-15
- 1.0.0 — 2017-08-15

## README

# strip-for-search
This is a very basic utility that converts strings of text to something that is easier to match words against. It creates a very consistent, predictable set of words that allow you to match a keyword or keywords against without minimal false positives or missing words.

```js
stripForSearch('Why do this? It creates a more consistent text-pattern matching output.')
// -> why do this ? it creates a more consistent text - pattern matching output .

stripForSearch('Some sort of useful sentence', 'category1', 'category2')
// -> 'some sort of useful sentence - category1 - category2'
```

1. All lowercase
2. Deburr (removing all diacritical marks)
3. Converting emdash and endash to dash (minus sign)
4. Adding padding around all punctuation. This allows you to match consistently:
5. Based on business, you can add additional keywords at the end of a sentence.


| match phrase | sentence | stripped sentence | match? | Notes
| ------------ | -------- | ----------------- | ------ | -----
| "a / b test" | Let's do A/B testing. | let ' s do a / b testing . | true |
| "a / b test" | Let's do A / B testing. | let ' s do a / b testing . | true
| "a / b test" | Let's do a/b testing. | let ' s do a / b testing . | true
| "a / b test" | Let's do a / b testing. | let ' s do a / b testing . | true
| "a / b tester" | Let's do A/B testing. | let ' s do a / b testing . | false
| "french cafe" | French Café | french cafe | true
| "1-3pm" | 1-3pm | 1-3pm | true | endash
| "1-3pm" | 1—3pm | 1-3pm | true | emdash
| "- programmatic categorization" | Not saying much. | not saying much . - programmatic categorization | true |

This punctuation padding allows a lot fewer match phrases to match a lot more cases.


### TODO:
* Remove Lodash dependency. May have to watch out for difference between `_.toLower` and `.toLowerCase`. Some of these may limit the version of Node.js this module works with. Not sure if it's worth it.
* Allow opt-out of some of these transformations. Probably through an options object passed in, instead of function chaining. If you want that, you could use https://github.com/ajgamble-milner/text-cleaner
* Optionally convert any number into a specific character. `1:00 - 3:00pm` would be converted to `# : 00 - # : 00pm`
* Add more complicated examples in the tests
* Optionally remove certain punctuation

---
_Source: https://npm.io/package/strip-for-search · Machine-readable twin of the npm.io package page. Health data is recomputed on every publish._
