Плагин Metalsmith для индексации контента на Algolia.
Этот плагин позволяет вам индексировать ваш контент в поисковой системе Algolia по процессу строительства кузнеца.
Если этот плагин не соответствует вашим потребностям, не стесняйтесь спрашивать о новых функциях.
npm install --save metalsmith-algolia
В примере ниже показан минимальный код, необходимый для индексации вашего контента. (узел: metalsmith-markdown не требуется)
const metalsmith = require ( 'metalsmith' ) ;
const markdown = require ( 'metalsmith-markdown' ) ;
const algolia = require ( 'metalsmith-algolia' ) ;
metalsmith ( __dirname )
. source ( './src' )
. use ( markdown ( ) )
. use ( algolia ( {
projectId : '<algolia-project-id>' ,
privateKey : '<algolia-private-key>' ,
index : '<algolia-index>'
} ) )
. build ( ) ;
пожалуйста, используйте аргументы командной строки или переменные среды для хранения вашего закрытого ключа algolia
Вот пример с поддельным шаблоном уценки ./src/mypage.md
---
title : My awesome static page !
description : This is a exemple page
algolia : true
---
# My awesome static page !
content exemple
По умолчанию метаданные (строковые/логические/целые числа) и содержимое будут отправлены в Algolia для всех файлов с algolia: true
метаданные.
В этом примере сгенерированный документ будет выглядеть так:
{
"title" : " My awesome static page ! " ,
"description" : " This is a exemple page " ,
"contents" : " <h1>My awesome static page ! n <p>content exemple</p> "
}
Если вам нужно очистить содержимое, вычислить дополнительные поля или удалить метаданные из индексации, вы можете использовать опцию fileParser
в конструкторе плагина, чтобы предоставить собственный обратный вызов для создания ваших собственных документов:
const metalsmith = require ( 'metalsmith' ) ;
const markdown = require ( 'metalsmith-markdown' ) ;
const algolia = require ( 'metalsmith-algolia' ) ;
const cheerio = require ( 'cheerio' ) ;
function customFileParser ( file , metadata ) {
let documents = [ ] ;
let $ = cheerio . load ( metadata . contents . toString ( ) ) ;
// add as many as documents as you need
documents . push ( {
title : metadata . title ,
contents : $ ( 'p' ) . text ( ) ;
} )
return documents ;
}
metalsmith ( __dirname )
. source ( './src' )
. use ( markdown ( ) )
. use ( algolia ( {
projectId : '<algolia-project-id>' ,
privateKey : '<algolia-private-key>' ,
index : '<algolia-index>' ,
fileParser : customFileParser
} ) )
. build ( ) ;
На этот раз сгенерированный документ будет выглядеть так:
{
"title" : " My awesome static page ! " ,
"contents" : " content exemple "
}
имя | по умолчанию | описание |
---|---|---|
projectId | (обязательно) Идентификатор проекта Algolia | |
privateKey | (обязательно) Закрытый ключ Алголии | |
index | (обязательно) * Индекс Алголии | |
clearIndex | ЛОЖЬ | Очистите индекс Algolia перед индексированием новых документов. |
fileParser | нулевой | Ссылка на функцию пользовательского обработчика для построения документов |
pattern | **/* | Шаблон Glob для сопоставления входных файлов. Может быть массивом или одной строкой |
подсказка: Metalsmith-algolia использует
debug