Skip to content

Repository files navigation

common-substrings

npm npm version license

A method written in TypeScript, used for finding common substrings in JavaScript and Node.js, particularly quick for large string samples. It works in both web and node environment and it has no dependencies.

Usage

Quickstart

The easiest way to start is:

import substrings from 'common-substrings';
const result = substrings(stringArray, {
  minOccurrence: 3,
  minLength: 5,
});

CommonJS is also supported:

const substrings = require('common-substrings');

Result is listed as an Object array, each element in the array include :

  • source : the index of the labels which contain this fragment,
  • name : the name of the fragment,
  • weight : the product of the fragment length and the fragment occurrence

Example Result

If we have the array ['java', 'javascript','pythonscript'], using the default options, we will get result array:

  [
    {name : 'java', source : [0,1], weight : 8},
    {name : 'script', source : [1,2], weight : 10}
  ]

The default options are:

  • minLength : 3
  • minOccurrence : 2

Options can be supplied independently; omitted properties retain their default values.

Result is fetched from leaf to node of the trie, so it is not sorted, but it will be quite easy with lodash sortBy function , for example:

    const resultSortByWeight = _.sortBy(result, ['weight']);
    const resultSortByLength = _.sortBy(result, substring => substring.name.length);

The algorithm works on characters, not word tokens, and prefers longer matches when overlapping matches consume the same source occurrences. If word boundaries matter, tokenize the input before calling this package.

Algorithm

Explanation here

Implementation in Other Languages

License

The algorithm code is under The MIT License

About

$ npm install common-substrings

Resources

Stars

Watchers

Forks

Releases

Packages

Used by

Contributors

Languages