# rdf-dataset-textsearch

> RDFJS DatasetCore with text search support

Latest version **0.1.0** (published 2019-08-26) · MIT license · 0 weekly downloads

## Install

```sh
npm install rdf-dataset-textsearch
pnpm add rdf-dataset-textsearch
yarn add rdf-dataset-textsearch
bun add rdf-dataset-textsearch
```

## Health

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

Positive: no vulnerabilities.

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

Negative: abandoned; low maintenance score.

## Facts

| | |
|---|---|
| Version | 0.1.0 |
| Published | 2019-08-26 |
| First published | 2019-08-26 |
| Weekly downloads | 0 |
| License | MIT |
| TypeScript types | none |
| Module format | CommonJS |
| Dependencies | 3 |
| Unpacked size | 24.8 KB |
| Known vulnerabilities | 0 |
| Install scripts | no |
| GitHub stars | 0 |
| Author | Thomas Bergwinkl |
| Maintainers | bergos |
| Keywords | dataset, rdf, rdfjs, search, text |

## Links

- npm: https://www.npmjs.com/package/rdf-dataset-textsearch
- Repository: https://github.com/bergos/rdf-dataset-textsearch
- Issues: https://github.com/bergos/rdf-dataset-textsearch/issues
- npm.io page: https://npm.io/package/rdf-dataset-textsearch

## Dependencies (3)

- [fuse.js](https://npm.io/package/fuse.js.md) ^3.4.5
- [rdf-ext](https://npm.io/package/rdf-ext.md) ^1.3.0
- [@rdfjs/to-ntriples](https://npm.io/package/@rdfjs/to-ntriples.md) ^1.0.2

## Alternatives

- [jsforce](https://npm.io/package/jsforce.md) — 851.2K weekly downloads
- [react-native-qrcode-svg](https://npm.io/package/react-native-qrcode-svg.md) — 693.5K weekly downloads
- [@salesforce/plugin-data](https://npm.io/package/@salesforce/plugin-data.md) — 394.9K weekly downloads
- [@backstage/plugin-search-common](https://npm.io/package/@backstage/plugin-search-common.md) — 308.5K weekly downloads
- [@chain-registry/types](https://npm.io/package/@chain-registry/types.md) — 38.4K weekly downloads

## Recent versions

- 0.1.0 (latest) — 2019-08-26

## README

# rdf-dataset-textsearch

This package provides text search for [RDFJS DatasetCore](https://rdf.js.org/dataset-spec/#datasetcore-interface) compatible datasets.

## Usage

The package exports a function to create a new dataset or wrap an existing one:

```javascript
const textSearchDataset = require('rdf-dataset-textsearch')

const dataset = textSearchDataset(options)
```

The function supports the following options:

- `dataset`: The dataset that should be wrapped.
  If this option is not provided the `factory` will be used.
- `factory`: A RDFJS dataset factory that should be used to create the wrapped dataset.
  If the `dataset` option is given this option will be ignored.
  By default `rdf-ext` is used.
- `properties`: An iterable object that contains the definition for the search index.
  Each item must be an object with a `term` property.
  The value of the `term` property must be a RDFJS Named Node with the IRI of the predicates which should be indexed.
  Optionally a `weight` property can be used to weight the property for the search.
  By default the weight value is `1.0`.
  In case multiple indexes are used `''` (empty string) is used as `indexId`. 
- `indexes`: An object that contains key-value pairs for multiple indexes.
  The key is used as `indexId`.
  The value must have the same structure as described in the `properties` option.

The function returns a dataset that implements the [RDFJS DatasetCore](https://rdf.js.org/dataset-spec/#datasetcore-interface) interface.
All methods of the spec can be used as described in the spec.
Additionally there is a `.search` method to make a text search on the indexed properties:

```javascript
const textSearchDataset = require('rdf-dataset-textsearch')
const namespace = require('@rdfjs/namespace')

const ns = {
  rdfs: namespace('http://www.w3.org/2000/01/rdf-schema#')
} 

const dataset = textSearchDataset({
  properties: [{
    term: ns.rdfs.label,
    weight: 1.0
  }, {
    term: ns.rdfs.comment,
    weight: 0.5
  }]
})

// fill the dataset with quads

const results = dataset.search('this is my query string')

results.forEach((result, index) => {
  console.log(`subject: ${result.value} (${results.scores[index]})`)
})
```

The `.search` method expects a query string as the first argument.

The method returns the subject of the matches as an array of RDFJS Terms.
The best matches appear first.
With the `.scores` property in the result, it's possible to get the score of the results.
The value of `.scores` is an array with the same number of elements as the result itself.
The score for a specific result can be found with the same index as the result (see the example above).

Optionally a second string argument for the `indexId` can be given.
See the `indexes` options for more details how to create multiple indexes.
By default the `''` (empty string) index is used.

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