{"_id":"@ckirby/wink-bm25-text-search","_rev":"6-b93f736cfeaa333ce4bda775337f29af","name":"@ckirby/wink-bm25-text-search","dist-tags":{"latest":"3.3.0"},"versions":{"2.1.0":{"name":"@ckirby/wink-bm25-text-search","version":"2.1.0","description":"Configurable BM25 Text Search Engine with simple semantic search support","keywords":["BM25","BM25F","TFIDF","TF-IDF","In Memory Search","Semantic Search","Full Text Search","NLP","Natural Language Processing"],"main":"src/wink-bm25-text-search.js","scripts":{"pretest":"npm run lint && npm run hint","test":"istanbul cover _mocha ./test/","coveralls":"istanbul cover _mocha --report lcovonly -- -R spec && cat ./coverage/lcov.info | coveralls && rm -rf ./coverage","docs":"docco -o ./docs/ ./src/*.js","hint":"jshint ./src/*.js ./test/*.js ./runkit/*.js","lint":"eslint ./src/*.js ./test/*.js ./runkit/*.js","changelog":"standard-changelog"},"repository":{"type":"git","url":"git+https://github.com/chadkirby/wink-bm25-text-search.git"},"author":{"name":"Sanjaya Kumar Saxena"},"license":"AGPL-3.0","bugs":{"url":"https://github.com/chadkirby/wink-bm25-text-search/issues"},"homepage":"https://github.com/chadkirby/wink-bm25-text-search#readme","devDependencies":{"chai":"^4.1.2","coveralls":"^3.0.1","docco":"^0.8.0","eslint":"^4.19.1","istanbul":"^1.1.0-alpha.1","jshint":"^2.9.5","mocha":"^5.2.0","mocha-lcov-reporter":"^1.3.0","standard-changelog":"^2.0.0"},"dependencies":{"wink-nlp-utils":"^1.9.0","wink-helpers":"^1.4.0"},"runkitExampleFilename":"runkit/example.js","gitHead":"cbaa451f7f0db5494efdc36c25c957e962a35c7d","_id":"@ckirby/wink-bm25-text-search@2.1.0","_npmVersion":"6.1.0","_nodeVersion":"8.9.0","_npmUser":{"name":"ckirby","email":"chad.kirby@gmail.com"},"dist":{"integrity":"sha512-5nAER+v0ntA807acRSAsY53nFZ+S2RHMi7hiYIDhFQX/20QytxPiamBpi7iQaXGClIwymqeQoSc4c6+KtXfzhg==","shasum":"802f2ca592050592958e0c8c128257884cde02d5","tarball":"https://registry.npmjs.org/@ckirby/wink-bm25-text-search/-/wink-bm25-text-search-2.1.0.tgz","fileCount":9,"unpackedSize":89208,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJbGYmpCRA9TVsSAnZWagAAy+kP/1b1DH1DJNcEVy00bGpg\nnCNIpLnHunDWxoZqzK7fLaOd8vpNTsH2yW6hJXFvTqEzj5/K85+aJvYHLCoz\ntwx6mFP25UQxzMr/KUOfmaDGiXaGajkGBalo/Bh3tJVhCHriUQZOO9CO/zJ5\nybH+SMn8VR0c+TBlDTSVOvR/rCMD+xAmGgrZwRpyJbBPhJUDoSpQl0xoGKBw\nARg0BUbMS9p97oEfoK0fyYmsiCbiEi2Jb4SRUDAk1ER8VFLgJfmTvCQ1uCpR\nGxfvQdhnp41k5JL4yi2rPyi/+BhgfDKDUEyXXQ1MFRUSqQ4QuEKVM1qj1CGn\nXteadgi+Rmo//fJVuL9YTI2GKFErab2LqS5nrVfKH3tP1h2hpSURjyv7gz2t\nrbq4QHytTDewGMdXuabhCHfbRCRiloPvasOpkv5oviUAovjZXxDlB8l4pQBj\nu6VRGDQkYDy5GtWx1lMz5khj1p9Ynl7+IRPqtJjny66OxKa8eMVBXf7gEyhN\nA9eEXyLFcTpzWTHUHoGDXpIQcoH780UunIFFos6TD2YnOG03NLq/s5As4Apz\nLkUZh+cAy1amx8tB7xK8i9dtobAOvGgB4Jwm6LhP5zVC1Li8K8Ce5VTNHzp/\nVAH7lwZ9KALScxStRAQ1VyicAxG1BEX/nUZOu7sHcjBMh7mL7drXkWCGkbld\nAuSb\r\n=RwIE\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCXhH/o9u0vP003nj6Qr2/XDrCfjvOfXNQdOzKBKqMXygIhAMeUkquSIXVg4k7GjIOXzA9s8tztp6REy5IfY9Gehht8"}]},"maintainers":[{"name":"ckirby","email":"chad.kirby@gmail.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/wink-bm25-text-search_2.1.0_1528400296119_0.47624470804670604"},"_hasShrinkwrap":false},"3.0.0":{"name":"@ckirby/wink-bm25-text-search","version":"3.0.0","description":"Configurable BM25 Text Search Engine with simple semantic search support","keywords":["BM25","BM25F","TFIDF","TF-IDF","In Memory Search","Semantic Search","Full Text Search","NLP","Natural Language Processing"],"main":"src/wink-bm25-text-search.js","scripts":{"pretest":"npm run lint","test":"istanbul cover _mocha ./test/","coveralls":"istanbul cover _mocha --report lcovonly -- -R spec && cat ./coverage/lcov.info | coveralls && rm -rf ./coverage","docs":"docco -o ./docs/ ./src/*.js","lint":"eslint ./src/*.js ./test/*.js ./runkit/*.js","changelog":"standard-changelog"},"repository":{"type":"git","url":"git+https://github.com/chadkirby/wink-bm25-text-search.git"},"author":{"name":"Sanjaya Kumar Saxena"},"license":"AGPL-3.0","bugs":{"url":"https://github.com/chadkirby/wink-bm25-text-search/issues"},"homepage":"https://github.com/chadkirby/wink-bm25-text-search#readme","devDependencies":{"chai":"^4.1.2","coveralls":"^3.0.1","docco":"^0.8.0","eslint":"^4.19.1","istanbul":"^1.1.0-alpha.1","mocha":"^5.2.0","mocha-lcov-reporter":"^1.3.0","standard-changelog":"^2.0.0"},"dependencies":{"bluebird":"^3.5.1","wink-helpers":"^1.4.0","wink-nlp-utils":"^1.9.0"},"runkitExampleFilename":"runkit/example.js","gitHead":"b4de358320a0da00b3eb04aea0c8f36aa46536a7","_id":"@ckirby/wink-bm25-text-search@3.0.0","_npmVersion":"6.1.0","_nodeVersion":"8.9.0","_npmUser":{"name":"ckirby","email":"chad.kirby@gmail.com"},"dist":{"integrity":"sha512-xB2qJ2Ua/x84z80YfLN0HCjVDYdvBSbvR3Bo715lgNvUCS4V9U1gM82iqzwqFMFovJ/dCeEEmkuRIZxxq1/YJw==","shasum":"fba8e88f02f9806c24812f7340f5444d3435de4e","tarball":"https://registry.npmjs.org/@ckirby/wink-bm25-text-search/-/wink-bm25-text-search-3.0.0.tgz","fileCount":9,"unpackedSize":89045,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJbIVQuCRA9TVsSAnZWagAA9tcP+QFJIQLsFRHWeQen3ugF\nuBuK7PjL5u/WL9tCQGdrtO1Qfxsbwhef424XSWVPCqPeVwDXQFFYflXgOqZ5\n8Uh4w6/ANGCXG6rR/4wgu+auSFMwoTIZX3R/PudtCKEc2uBkLBPVQofWbvxW\nnRBmiTY6u57ccLXM95ZS8ms35T6bUttsKumJiebzRkAfJhgRTA8yz3+zr4L7\nyaGfGCvasxLxVhS+DcrHXdPw7c/j8VjpFh8dmfYzYQQjVp7WftSBeezGhcri\nQNheSKD21zGwmkTLURgpU3KEZ2Mlk7k0banOk7BWYgkoOR9Y+EHTIcHyHxZs\n1gVwjflC369XKgZHo+M2ouDLzzTdBhFQJJvWn/FFAymvwkqpbiUfJRL5xtgE\n6E04uwiKcCKsNCQSoViS6XXsC4Wx624QrHopaElssA+WYz2u4DtVrmiuD86Y\nwWOep+9R94870qYvYx4WotqcoEgNDDkoxrdYukY1kR+wLDYO8nYcu725RQdP\nilsuiAjRtx3lwaDZDWiSPSl6SLdO83qBYl10kILjL0eVcLK6XhxTW9gukmPz\nuEMnCVGjZ+XApX2+9QXhXcpvv8Y3aIheLha6qv2WTQj03e2Nh7heS+JLRqSG\nQgNah6TwTbqeRQw2zvOEwBIx86t+oUNCTwb8tTsN1aq69v+1QkEiL17Cf0nB\nSQBN\r\n=zLHq\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIAhJwwo9ixqQ814tOrKkBlrJhJfEYlGdBaMTAgd7o8WvAiEAgLRSfC+VWXYyMwV+lHdznSdGIxCcVSCWaGst80F5HnI="}]},"maintainers":[{"name":"ckirby","email":"chad.kirby@gmail.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/wink-bm25-text-search_3.0.0_1528910892428_0.4748432249416301"},"_hasShrinkwrap":false},"3.1.0":{"name":"@ckirby/wink-bm25-text-search","version":"3.1.0","description":"Configurable BM25 Text Search Engine with simple semantic search support","keywords":["BM25","BM25F","TFIDF","TF-IDF","In Memory Search","Semantic Search","Full Text Search","NLP","Natural Language Processing"],"main":"src/wink-bm25-text-search.js","scripts":{"pretest":"npm run lint","test":"istanbul cover _mocha ./test/","coveralls":"istanbul cover _mocha --report lcovonly -- -R spec && cat ./coverage/lcov.info | coveralls && rm -rf ./coverage","docs":"docco -o ./docs/ ./src/*.js","lint":"eslint ./src/*.js ./test/*.js ./runkit/*.js","changelog":"standard-changelog"},"repository":{"type":"git","url":"git+https://github.com/chadkirby/wink-bm25-text-search.git"},"author":{"name":"Sanjaya Kumar Saxena"},"license":"AGPL-3.0","bugs":{"url":"https://github.com/chadkirby/wink-bm25-text-search/issues"},"homepage":"https://github.com/chadkirby/wink-bm25-text-search#readme","devDependencies":{"chai":"^4.1.2","coveralls":"^3.0.1","docco":"^0.8.0","eslint":"^4.19.1","istanbul":"^1.1.0-alpha.1","mocha":"^5.2.0","mocha-lcov-reporter":"^1.3.0","standard-changelog":"^2.0.0"},"dependencies":{"bluebird":"^3.5.1","wink-helpers":"^1.4.0","wink-nlp-utils":"^1.9.0"},"runkitExampleFilename":"runkit/example.js","gitHead":"f85ffb4088fed9ebefa8092247df4fcc399e409c","_id":"@ckirby/wink-bm25-text-search@3.1.0","_npmVersion":"6.1.0","_nodeVersion":"8.9.0","_npmUser":{"name":"ckirby","email":"chad.kirby@gmail.com"},"dist":{"integrity":"sha512-0FAL8+1FevUqXpoXZPCQIf9i/AuawSh+r1lxZyWwzAE8v7R6oyd1SdG+CfbvHNzhi/n/f3my58UM5L+12ha6Iw==","shasum":"e69803310a59c63d693b9c76586725ecfed74955","tarball":"https://registry.npmjs.org/@ckirby/wink-bm25-text-search/-/wink-bm25-text-search-3.1.0.tgz","fileCount":9,"unpackedSize":89205,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJbIrdLCRA9TVsSAnZWagAAZL8QAJi8zCC75RSvc2VHINbq\nptNHy1E6TZPnNcKfDbwFewE/GmGvcRDT/67b/v7lkt10BLEyDlrDEJygTftE\nDxL2c323yCpS03gs3FXe7wx4p05caUNMxKBMV8/VR13df5PwNbtpZdVc3/m1\n0vpPosRsepoyXiA1nuhAl1irCXZoWSptsNaPtqenyOfdy64FrhmYggGysj39\nRFkiAcWNggOqhq/h5gffAofGbXkdzTIzVdSBFAiZ6/2/qyKmwx2ElvduNX5r\njgAHq0MwZi4ta0Y5oJYycb3XPUZF0QXeMrsjaaHQLELotvJRVwwJ1uql/htb\nJYtDvP6t1Nnb+EJHyBulME3qzdM4hpE/c8ToFnjTyaQJAvHMnl6J4BPoONax\nbarE+IlmKuBM+8q/DnRAgkX/iTyl4qjRme/M3hQscu9Mc9FB9yW6r/7nA61h\noo0oEXp+p7X0iSDQXye0sM64LV3ClQTA9U2Y2x8HZtR6w2lIxOXLD5IEvzoD\nFpWEwtiGmqpQslyaKqvAqp/h08iri9tU0O+tSnk59ifCHx1eqbFOmCBVFert\ngTz0//3aIC2nIuTpLv44PmfVEy1SPC/1Bz5YXuIKtfx0H9xuq6e8J7dUoaWT\n1yz1HNk8Im0VMXTiu3w5UpGGujEeIYm7e/GOD52xvlurlhxDFzyXa3L6IubC\nsEZu\r\n=vcoY\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIDbXuRmChICV0WBlFsJm91J90wTUdWtLN7taHawmtLdLAiBequ1rVBtnR8Ddc3sJ3V/O94ZOo+KkB7kCt8TFzIXFlg=="}]},"maintainers":[{"name":"ckirby","email":"chad.kirby@gmail.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/wink-bm25-text-search_3.1.0_1529001801694_0.055722583992921404"},"_hasShrinkwrap":false},"3.1.1":{"name":"@ckirby/wink-bm25-text-search","version":"3.1.1","description":"Configurable BM25 Text Search Engine with simple semantic search support","keywords":["BM25","BM25F","TFIDF","TF-IDF","In Memory Search","Semantic Search","Full Text Search","NLP","Natural Language Processing"],"main":"src/wink-bm25-text-search.js","scripts":{"pretest":"npm run lint","test":"istanbul cover _mocha ./test/","coveralls":"istanbul cover _mocha --report lcovonly -- -R spec && cat ./coverage/lcov.info | coveralls && rm -rf ./coverage","docs":"docco -o ./docs/ ./src/*.js","lint":"eslint ./src/*.js ./test/*.js ./runkit/*.js","changelog":"standard-changelog"},"repository":{"type":"git","url":"git+https://github.com/chadkirby/wink-bm25-text-search.git"},"author":{"name":"Sanjaya Kumar Saxena"},"license":"AGPL-3.0","bugs":{"url":"https://github.com/chadkirby/wink-bm25-text-search/issues"},"homepage":"https://github.com/chadkirby/wink-bm25-text-search#readme","devDependencies":{"chai":"^4.1.2","coveralls":"^3.0.1","docco":"^0.8.0","eslint":"^4.19.1","istanbul":"^1.1.0-alpha.1","mocha":"^5.2.0","mocha-lcov-reporter":"^1.3.0","standard-changelog":"^2.0.0"},"dependencies":{"bluebird":"^3.5.1","wink-helpers":"^1.4.0","wink-nlp-utils":"^1.9.0"},"runkitExampleFilename":"runkit/example.js","gitHead":"a01b02dc37e35c911d91a0a7f1ecc2a155349090","_id":"@ckirby/wink-bm25-text-search@3.1.1","_npmVersion":"6.1.0","_nodeVersion":"8.9.0","_npmUser":{"name":"ckirby","email":"chad.kirby@gmail.com"},"dist":{"integrity":"sha512-gOLeBhj+miUYdtXRC6Zc8vPcX4F+pyZmPOytHgz90U42Jgb7Ig4X8ZX2Cy9Tzk4b+OcL/3FTYS2KcZgSiS2iWQ==","shasum":"46ded16d0b3b127e349d4a1e4b37ba85ac481e17","tarball":"https://registry.npmjs.org/@ckirby/wink-bm25-text-search/-/wink-bm25-text-search-3.1.1.tgz","fileCount":9,"unpackedSize":89309,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJbIumVCRA9TVsSAnZWagAA1a8P/A18SZvF8dDEDHR9XGko\nINiWEhEf9/DW/bBeTlEtBbKu8SjKbjR6e7TPlSJuERGxU+6UaDera0rvhbQA\nCuXc2/G2WdCaOk9fAXqOYyUJPJxH9UWGHgOPRhEQtI7McX9o44wn3GKGBk7m\n5hxx/NXVSG1NqLrFH02bS8UEySb7/wjMHwY15ch2wxP2IayfS6f7T2J1Dbs+\nM+0kqc4qdNpZDbdbZbDfZ6bad459Ra54SkXSs/K9iDFbFwcqq8VqYiZMo4jF\nR0TK/pna0kfFIs6DyN7q6E4c6uSKNnjRNBHJpupKWjNSA1o3OgA/MWbYAHBe\nSDPGaCEPI3EGGOf6yW6rrh8nOvF3eaNZtFruYkzb/QQuWE8MUAN/jjoXQYkV\nvSaNzq/qyO0M9g2KaZ6ScJzeQhrwDku61Gj9Es18ccCgZFCJM16Glh+j1aKQ\n1iHt+wV+gwrMww96959AW/laJO8TcYDsfYa7HlAr6EDQ6GcNaJD9QBDP7CeN\n8xuzoMfpSABOCBQIBK5SdX+ti4v38JTq4/eE2dtizr1JYYahMeZ+dOvrHJma\ny9lA6Z6iMThAjAMPbn+Cu2yym+hi12DCswnQ2FVIXkVQiVc8azo5h5HxA3iF\nc+R0tEeURGHZMQ0lnZ96vETqW6mL3U0qzV7xPZg211U+nqWCMrBqqS/rriaP\nIklw\r\n=llWB\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIDe5CqE2YcAHq8gSO91Gh3VD66/klztbYf9l8W19JJYrAiB3kmlPfMsw7e2Bet10793I5BBg4MBybLXKWgUmJCnq6g=="}]},"maintainers":[{"name":"ckirby","email":"chad.kirby@gmail.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/wink-bm25-text-search_3.1.1_1529014676713_0.4632569714142105"},"_hasShrinkwrap":false},"3.2.0":{"name":"@ckirby/wink-bm25-text-search","version":"3.2.0","description":"Configurable BM25 Text Search Engine with simple semantic search support","keywords":["BM25","BM25F","TFIDF","TF-IDF","In Memory Search","Semantic Search","Full Text Search","NLP","Natural Language Processing"],"main":"src/wink-bm25-text-search.js","scripts":{"pretest":"npm run lint","test":"istanbul cover _mocha ./test/","coveralls":"istanbul cover _mocha --report lcovonly -- -R spec && cat ./coverage/lcov.info | coveralls && rm -rf ./coverage","docs":"docco -o ./docs/ ./src/*.js","lint":"eslint ./src/*.js ./test/*.js ./runkit/*.js","changelog":"standard-changelog"},"repository":{"type":"git","url":"git+https://github.com/chadkirby/wink-bm25-text-search.git"},"author":{"name":"Sanjaya Kumar Saxena"},"license":"AGPL-3.0","bugs":{"url":"https://github.com/chadkirby/wink-bm25-text-search/issues"},"homepage":"https://github.com/chadkirby/wink-bm25-text-search#readme","devDependencies":{"chai":"^4.1.2","coveralls":"^3.0.1","docco":"^0.8.0","eslint":"^4.19.1","istanbul":"^1.1.0-alpha.1","mocha":"^5.2.0","mocha-lcov-reporter":"^1.3.0","standard-changelog":"^2.0.0"},"dependencies":{"bluebird":"^3.5.1","wink-helpers":"^1.4.0","wink-nlp-utils":"^1.9.0"},"runkitExampleFilename":"runkit/example.js","gitHead":"f233d3621b82882d027702b6c0738a021c321658","_id":"@ckirby/wink-bm25-text-search@3.2.0","_npmVersion":"6.1.0","_nodeVersion":"8.9.0","_npmUser":{"name":"ckirby","email":"chad.kirby@gmail.com"},"dist":{"integrity":"sha512-k9uBr8HtJMe+fIiGgNly4OII/YqGR91fqmTMV0xBDdlae4ZAhKox5gfHHMWzS4dbV43M7mnd3jYyqRWTHgzofA==","shasum":"37de9a8991ed288b4ecb5514d07b57b4c98e11b4","tarball":"https://registry.npmjs.org/@ckirby/wink-bm25-text-search/-/wink-bm25-text-search-3.2.0.tgz","fileCount":9,"unpackedSize":89392,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJbIu/GCRA9TVsSAnZWagAAEe8QAIVCBkLyZk+3vRzEXSfY\ns1+MsPIodnMI9an+ZvBD4HI5tDSAjLIgzD7Em5LV3oh0vdVwRW/1aayBDjoA\njfFDSae5Zc+a0X89jTKFt8UT7inQfoaR/IuykWyrHjO0r76RHiC2T9YqgNMW\n1SbBlPvxMsrjyNCZcOUIE8h1ZAIulbcv4ir6LDxyC9z9Gmi8m/YX2wsaLgHl\n4O2LLQ+qO/l8rBinR0ZRwIrrm6SVfTWYIrAmzIQxnxFt1JTNyTWxV7xfwOjL\nFJUvjhT/eh+66qycjkjMio0qp7CIRzGjlZd1dkfKsO/q6AsulfB4V1INtvkb\ndKxwhuqHzdAajlZnnLbNFTetAImLivrQD+RiianXVAahbb8a87fJ+0MHX/bl\n67RRVkn2zAWsXZ8YhgzOtlqh2CcXPhs2218iD3rOc2JgDNbb2cJg2R7j5gFe\nLnVq+WPRI7dubacyG3oTfs5n2SD66r7OclW2CTMOEA4LHT+HT9ZxqO0GTIAr\ndSESgaT0/iyKaAYeFsVUCnns7qwBRtjsJk+xQ+FLkG/KfvOCyCxlftmcTtON\nFVMLQDAt2pMAkHgtQ6eoZLSBuM2A/OkiQHKTfRp6UpckYW+t70r9UwF0Ou2h\nLbIOxaBXcBy0fHmh12ambunncM9VXPkXID+iNSx1hjP3Q+AEKoc4FXPpgYof\nrE7s\r\n=7tel\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCMxf9Pm0QyMCKrtwmigHbbzabHG+NwQMLQhgaxfl+d0AIhANoA5P2GCSJLykXJeeyczYrudLpYt9ueWhrqal3k0jFH"}]},"maintainers":[{"name":"ckirby","email":"chad.kirby@gmail.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/wink-bm25-text-search_3.2.0_1529016262030_0.4024628510059365"},"_hasShrinkwrap":false},"3.3.0":{"name":"@ckirby/wink-bm25-text-search","version":"3.3.0","description":"Configurable BM25 Text Search Engine with simple semantic search support","keywords":["BM25","BM25F","TFIDF","TF-IDF","In Memory Search","Semantic Search","Full Text Search","NLP","Natural Language Processing"],"main":"src/wink-bm25-text-search.js","scripts":{"pretest":"npm run lint","test":"istanbul cover _mocha ./test/","coveralls":"istanbul cover _mocha --report lcovonly -- -R spec && cat ./coverage/lcov.info | coveralls && rm -rf ./coverage","docs":"docco -o ./docs/ ./src/*.js","lint":"eslint ./src/*.js ./test/*.js ./runkit/*.js","changelog":"standard-changelog"},"repository":{"type":"git","url":"git+https://github.com/chadkirby/wink-bm25-text-search.git"},"author":{"name":"Sanjaya Kumar Saxena"},"license":"AGPL-3.0","bugs":{"url":"https://github.com/chadkirby/wink-bm25-text-search/issues"},"homepage":"https://github.com/chadkirby/wink-bm25-text-search#readme","devDependencies":{"chai":"^4.1.2","coveralls":"^3.0.1","docco":"^0.8.0","eslint":"^4.19.1","istanbul":"^1.1.0-alpha.1","mocha":"^5.2.0","mocha-lcov-reporter":"^1.3.0","standard-changelog":"^2.0.0"},"dependencies":{"bluebird":"^3.5.1","wink-helpers":"^1.4.0","wink-nlp-utils":"^1.9.0"},"runkitExampleFilename":"runkit/example.js","gitHead":"a85ca28615ab66d951ffd27e35f72b82a9f3711a","_id":"@ckirby/wink-bm25-text-search@3.3.0","_npmVersion":"6.1.0","_nodeVersion":"8.9.0","_npmUser":{"name":"ckirby","email":"chad.kirby@gmail.com"},"dist":{"integrity":"sha512-rieRbR5rBZqv6dqiorPkW0qR28LMOK6L8UpD3OLeO1BgH9BHsn6MSQi7XQRBuPZOF/gVMlRBib9mQtxzjBrNMw==","shasum":"f109b2d3e67630c2e01f357cd5bed7e8b0acf319","tarball":"https://registry.npmjs.org/@ckirby/wink-bm25-text-search/-/wink-bm25-text-search-3.3.0.tgz","fileCount":10,"unpackedSize":91958,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJbJE1hCRA9TVsSAnZWagAAfCYP/jq62B6nQ2kSyvZQovFu\nisw+hneQUl2ujTrYaUf7SOL7BrxUE06y4tz7osV4a9HElJonxLeFOB6h2yfS\nebnBjKXHEsDZjD6WdOQ9NBdi8TvNNH4mkr+4MJ5EkUkVXuDEeiPdKkRsAryH\nr0FWr0GBFD6+CCeKLyWU3ocVO0CF8dB97iZ+7yPC1Z5Yng9TQvdQuIBxc3Xj\naNU3peU5rbF1Uy/dCV7g7WKN+fMtSvWFIgiIqhYl6889xrXmfq7qbA1XZcAx\nlhdJDvHX4+VQ/QjZ4gsQcQfPOfKxtgjnirSpmuIq8vT5I5LlGpv5sFEUFhOJ\nb+KH75qVCXw0Pocc/zw1MYXINpnBPOMaO1AgmjFLpmNgOAnJ1pnMakvTdeB/\nawGPqYmLT6LJ23PauU5cQmlHYyXklSwF999umrdRx0drK0wDghR6y5N1fZEU\nEmLyOSlom1zvCQjSYLOoIdGmZfRxdW3isZwVoJPNg3InqrWFwMUITwXcQUWw\ne9aO+iYi1Q68Ln+vpJyCtv3qeiIOcPFIhHa1hhPV8H13/cIwk9nJ7O/Ywh2s\nDHpc5Gxm0InIhL18n4fosV0XB//7nBLTmkcUmd+qkjCMW8KlX8gQPo/3wvX6\nIvkhb634wrzEjg38fHIyeaUwIJaqAxhacAB5IaFD0RCc+usRypxkKi8XYpdH\nCKcN\r\n=Pj9g\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIHEuMwz8qE0uqSl5f7ukWTEjKmC5AFTZoNRMAiblG2t3AiBZMCvhbhApTT2IIUrVpgsfW+xOn7oK/pDqh/6WkWNpjA=="}]},"maintainers":[{"name":"ckirby","email":"chad.kirby@gmail.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/wink-bm25-text-search_3.3.0_1529105759939_0.5151172608264176"},"_hasShrinkwrap":false}},"time":{"created":"2018-06-07T19:38:15.867Z","2.1.0":"2018-06-07T19:38:16.201Z","modified":"2022-04-04T23:10:33.452Z","3.0.0":"2018-06-13T17:28:13.225Z","3.1.0":"2018-06-14T18:43:21.787Z","3.1.1":"2018-06-14T22:17:56.778Z","3.2.0":"2018-06-14T22:44:22.110Z","3.3.0":"2018-06-15T23:36:00.014Z"},"maintainers":[{"name":"ckirby","email":"chad.kirby@gmail.com"}],"description":"Configurable BM25 Text Search Engine with simple semantic search support","homepage":"https://github.com/chadkirby/wink-bm25-text-search#readme","keywords":["BM25","BM25F","TFIDF","TF-IDF","In Memory Search","Semantic Search","Full Text Search","NLP","Natural Language Processing"],"repository":{"type":"git","url":"git+https://github.com/chadkirby/wink-bm25-text-search.git"},"author":{"name":"Sanjaya Kumar Saxena"},"bugs":{"url":"https://github.com/chadkirby/wink-bm25-text-search/issues"},"license":"AGPL-3.0","readme":"\n# wink-bm25-text-search\n\nFast Full Text Search based on [BM25](http://opensourceconnections.com/blog/2015/10/16/bm25-the-next-generation-of-lucene-relevation/)\n\n### [![Build Status](https://api.travis-ci.org/winkjs/wink-bm25-text-search.svg?branch=master)](https://travis-ci.org/winkjs/wink-bm25-text-search) [![Coverage Status](https://coveralls.io/repos/github/winkjs/wink-bm25-text-search/badge.svg?branch=master)](https://coveralls.io/github/winkjs/wink-bm25-text-search?branch=master) [![Inline docs](http://inch-ci.org/github/winkjs/wink-bm25-text-search.svg?branch=master)](http://inch-ci.org/github/winkjs/wink-bm25-text-search) [![dependencies Status](https://david-dm.org/winkjs/wink-bm25-text-search/status.svg)](https://david-dm.org/winkjs/wink-bm25-text-search) [![devDependencies Status](https://david-dm.org/winkjs/wink-bm25-text-search/dev-status.svg)](https://david-dm.org/winkjs/wink-bm25-text-search?type=dev)\n\n<img align=\"right\" src=\"https://decisively.github.io/wink-logos/logo-title.png\" width=\"100px\" >\n\nAdd fast in-memory semantic search to your application using **`wink-bm25-text-search`**. It is a part of [wink](http://winkjs.org/) — a growing family of high quality packages for Statistical Analysis, Natural Language Processing and Machine Learning in NodeJS.\n\nIt is based on state-of-the-art text search algorithm — BM25 — a Probabilistic Relevance Framework for document retrieval. It's [API](#api) offers a rich set of features:\n\n1. **Scalable Design** allows easy addition/customization of features like **geolocation** and more.\n\n2. **Search on exact values of pre-defined fields**, makes search results more relevant.\n\n3. **Index optimized for size and speed** can be exported (and imported) from the added documents in a JSON format.\n\n4. **Full control over BM25 configuration** — while default values work well for most situations, there is an option to control them.\n\n5. **Add semantic flavor** to the search by:\n    1. Assigning different numerical weights to the fields. A negative field weight will pull down the document's score whenever a match with that field occurs.\n    2. Using `amplifyNegation()` and `propagateNegations()` from [wink-nlp-utils](https://www.npmjs.com/package/wink-nlp-utils) will ensure different search results for query texts containing phrases like **\"good\"** and **\"not good\"**.\n    3. Defining different text preparation tasks separately for the fields and query text.\n\n6. **Complete flexibility in text preparation** — perform tasks such as tokenization and stemming using [wink-nlp-utils](https://www.npmjs.com/package/wink-nlp-utils) or any other package of your choice.\n\n\n\n## Installation\nUse [npm](https://www.npmjs.com/package/wink-bm25-text-search) to install:\n```sh\nnpm install wink-bm25-text-search --save\n```\n\n\n## Example [![Try on Runkit](https://badge.runkitcdn.com/wink-bm25-text-search.svg)](https://npm.runkit.com/wink-bm25-text-search)\n\n\n```javascript\n// Load wink-bm25-text-search\nvar bm25 = require( 'wink-bm25-text-search' );\n// Create search engine's instance\nvar engine = bm25();\n// Load NLP utilities\nvar nlp = require( 'wink-nlp-utils' );\n// Load sample data (load any other JSON data instead of sample)\nvar docs = require( 'wink-bm25-text-search/sample-data/data-for-wink-bm25.json' );\n\n// Step I: Define config\n// Only field weights are required in this example.\nengine.defineConfig( { fldWeights: { title: 4, body: 1, tags: 2 } } );\n\n// Step II: Define PrepTasks\n// Set up preparatory tasks for 'body' field\nengine.definePrepTasks( [\n  nlp.string.lowerCase,\n  nlp.string.removeExtraSpaces,\n  nlp.string.tokenize0,\n  nlp.tokens.propagateNegations,\n  nlp.tokens.removeWords,\n  nlp.tokens.stem\n], 'body' );\n// Set up 'default' preparatory tasks i.e. for everything else\nengine.definePrepTasks( [\n  nlp.string.lowerCase,\n  nlp.string.removeExtraSpaces,\n  nlp.string.tokenize0,\n  nlp.tokens.propagateNegations,\n  nlp.tokens.stem\n] );\n\n// Step III: Add Docs\n// Add documents now...\ndocs.forEach( function ( doc, i ) {\n  // Note, 'i' becomes the unique id for 'doc'\n  engine.addDoc( doc, i );\n} );\n\n// Step IV: Consolidate\n// Consolidate before searching\nengine.consolidate();\n\n// All set, start searching!\nvar results = engine.search( 'who is married to barack' );\n// results is an array of [ doc-id, score ], sorted by score\n// results[ 0 ][ 0 ] i.e. the top result is:\nconsole.log( docs[ results[ 0 ][ 0 ] ].body );\n// -> Michelle LaVaughn Robinson Obama (born January 17, 1964) is...\n```\n\n## API\n\n#### defineConfig( config )\nDefines the configuration from the `config` object. This object defines following 3 properties:\n\n1. The `fldWeights` (mandatory) is an object where each *key* is the *document's field name* and the *value* is the *numerical weight* i.e. the importance of that field.\n\n2. The `bm25Params` (optional) is also an object that defines upto 3 keys viz. `k1`, `b`, and `k`. Their default values are respectively `1.2`, `0.75`, and `1`. Note: **`k1`** controls TF saturation; **`b`** controls degree of normalization, and **`k`** manages IDF.\n\n3. The `ovFldNames` (optional) is an array containing the names of the fields, whose original value must be retained. This is useful in reducing the search space using **filter** in `search()` api call.\n\n#### definePrepTasks( tasks [, field ] )\n\nDefines the text preparation `tasks` to transform raw incoming text into an array of tokens required during `addDoc()`, and `search()` operations. It returns the count of `tasks`.\n\nThe `tasks` should be an array of functions. The first function in this array must accept a string as input; and the last function must return an array of tokens as JavaScript Strings. Each function must accept one input argument and return a single value.  \n\nThe second argument — `field` is optional. It defines the `field` of the document for which the `tasks` will be defined; in absence of this argument, the `tasks` become the default for everything else. The configuration must be defined via `defineConfig()` prior to this call.\n\nAs illustrated in the example above, [wink-nlp-utils](https://www.npmjs.com/package/wink-nlp-utils) offers a rich set of such functions.\n\n#### addDoc( doc, uniqueId )\nAdds the `doc` with the `uniqueId` to the BM25 model. Prior to adding docs, `defineConfig()` and `definePrepTasks()` must be called. It accepts structured JSON documents as input for creating the model. Following is an example document structure of the sample data JSON contained in this package:\n```\n{\n  title: 'Barack Obama',\n  body: 'Barack Hussein Obama II born August 4, 1961 is an American politician...'\n  tags: 'democratic nobel peace prize columbia michelle...'\n}\n```\n\nThe sample data is created using excerpts from [Wikipedia](https://en.wikipedia.org/wiki/Main_Page) articles such as one on [Barack Obama](https://en.wikipedia.org/wiki/Barack_Obama).\n\nIt has an alias `learn( doc, uniqueId )` to maintain API level uniformity across various [wink](https://www.npmjs.com/~sanjaya) packages such as [wink-naive-bayes-text-classifier](https://www.npmjs.com/package/wink-naive-bayes-text-classifier).\n\n\n\n#### consolidate( fp )\nConsolidates the BM25 model for all the added documents. The `fp` defines the precision at\nwhich term frequency values are stored. The default value is 4 and is good enough for most situations. It is a prerequisite for `search()` and documents cannot be added post consolidation.\n\n#### search( text [, limit, filter, params ] )\nSearches for the `text` and returns upto the `limit` number of results. The `filter` should be a function that must return true or false based on `params`. Think of it as Javascript Array's filter function. It receives two arguments viz. (a) an object containing field name/value pairs as defined via `ovFldNames` in `defineConfig()`, and (b) the `params`.\n\nThe last three arguments `limit`, `filter` and `params` are optional. The default value of `limit` is **10**.\n\nThe result is an array of\n`[ uniqueId, relevanceScore ]`, sorted on the `relevanceScore`.\n\nLike `addDoc()`, it also has an alias `predict( doc, uniqueId )` to maintain API level uniformity across various [wink](https://www.npmjs.com/~sanjaya) packages such as [wink-naive-bayes-text-classifier](https://www.npmjs.com/package/wink-naive-bayes-text-classifier).\n\n\n#### exportJSON()\nThe BM25 model can be exported as JSON text that may be saved in a file. It is a good idea to export JSON prior to consolidation and use the same whenever more documents need to be added; whereas JSON exported after consolidation is only good for search operation.\n\n#### importJSON( json )\nAn existing JSON BM25 model can be imported for search. It is essential to call `definePrepTasks()` before attempting to search.\n\n#### reset()\nIt completely resets the BM25 model by re-initializing all the variables, except the preparatory tasks.\n\n\n## Need Help?\nIf you spot a bug and the same has not yet been reported, raise a new [issue](https://github.com/winkjs/wink-bm25-text-search/issues) or consider fixing it and sending a pull request.\n\n\n## Copyright & License\n**wink-bm25-text-search** is copyright 2017-18 GRAYPE Systems Private Limited.\n\nIt is licensed under the under the terms of the GNU Affero General Public License as published by the Free\nSoftware Foundation, version 3 of the License.\n","readmeFilename":"README.md"}