@petroglyph/search
v0.2.0
Published
Search engine for Petroglyph. Provides BM25-based full-text search for notes and content.
Maintainers
Readme
@petroglyph/search
Search engine for Petroglyph. Provides BM25-based full-text search for notes and content.
Installation
bun add @petroglyph/search
# or
npm install @petroglyph/search
# or
pnpm add @petroglyph/searchUsage
BM25Engine
import { BM25Engine } from '@petroglyph/search/bm25';
const engine = new BM25Engine();
// Index documents
await engine.index('doc1', 'This is a sample document about search');
await engine.index('doc2', 'Another document with different content');
await engine.index('doc3', 'Search functionality is important');
// Search
const results = await engine.search('search document');
// Returns: [{ id: 'doc1', score: ... }, { id: 'doc3', score: ... }, ...]
// Remove from index
await engine.remove('doc1');
// Clear index
await engine.clear();Integration with Petroglyph
The search engine is integrated into @petroglyph/core:
import { createCave } from '@petroglyph/core';
import { LocalFileSystem } from '@petroglyph/fs/local';
import { BM25SearchEngine } from '@petroglyph/search/bm25';
const cave = await createCave({
fileSystem: new LocalFileSystem('/path/to/vault'),
searchEngine: new BM25SearchEngine(),
});
// Search notes
const results = await cave.notes.search('search term');BM25 Algorithm
BM25 (Best Matching 25) is a ranking function used to estimate the relevance of documents to a given search query. It's widely used in information retrieval systems.
Exports
This package provides multiple entry points:
@petroglyph/search- Main exports (types, BM25Engine)@petroglyph/search/bm25- BM25Engine class
License
MIT
