Compare commits
76 Commits
Author | SHA1 | Date | |
---|---|---|---|
|
9dd5175b89 | ||
|
a79e8b4397 | ||
|
68e74c1ff4 | ||
|
dbe03b6cfd | ||
|
a834da1367 | ||
|
36bed44d68 | ||
|
3828ac5680 | ||
|
e24e48710d | ||
|
85909b55e9 | ||
|
f6d67697d1 | ||
|
5dd3253383 | ||
|
96a71fa2a4 | ||
|
4a263f2e1a | ||
|
f53b2046f9 | ||
|
e3ae95464e | ||
|
d3ecfed30e | ||
|
543c4ec387 | ||
|
d06d002d1a | ||
|
44701ef764 | ||
|
fc7847e842 | ||
|
81327d8fad | ||
|
e10d2fd70b | ||
|
377b517e81 | ||
|
84e2f5bf77 | ||
|
0f4ac2419f | ||
|
464bcc3415 | ||
|
2f08fd4a4e | ||
|
f0cacfec36 | ||
|
5ed31c4a89 | ||
|
6b0a258cdc | ||
|
bdc4b87571 | ||
|
c3ce91b4b6 | ||
|
18fc8bc138 | ||
|
5083717a15 | ||
|
1f40f957de | ||
|
6acbf6fb68 | ||
|
c45b724e18 | ||
|
03ebf6f29c | ||
|
258742f5ae | ||
|
04e60eb0b0 | ||
|
49787bd624 | ||
|
cba3a363e7 | ||
|
325230ef79 | ||
|
e7a0dc32c5 | ||
|
d51afe9640 | ||
|
a5bf8f6089 | ||
|
7a9cb2add4 | ||
|
528e2f6231 | ||
|
dc71162410 | ||
|
856cade55f | ||
|
22f6227ca8 | ||
|
bef6d323e5 | ||
|
37678a2ee9 | ||
|
8e1f913f50 | ||
|
26414bb132 | ||
|
4fb1197768 | ||
|
5321e55c28 | ||
|
76ff1247f3 | ||
|
4d2279e7f3 | ||
|
2ac00250c3 | ||
|
cd1e79019d | ||
|
8bee55c05e | ||
|
d218c99fa6 | ||
|
e18794eb25 | ||
|
91d76bbc62 | ||
|
294ac658aa | ||
|
b81b29493e | ||
|
92d34b89e5 | ||
|
ae69de4833 | ||
|
5c2bd7128a | ||
|
3ce7da9360 | ||
|
5a12333ab8 | ||
|
62c60482fa | ||
|
3f45c6b1a3 | ||
|
93429026e0 | ||
|
0fceb450d4 |
3
.gitignore
vendored
@ -5,7 +5,10 @@ coverage/
|
|||||||
docs-dev/
|
docs-dev/
|
||||||
gemfiles/*.lock
|
gemfiles/*.lock
|
||||||
spec/site/_site
|
spec/site/_site
|
||||||
|
spec/integration/site/_site
|
||||||
|
|
||||||
|
spec/site/.jekyll-cache/
|
||||||
|
.jekyll-cache/
|
||||||
|
|
||||||
.DS_Store
|
.DS_Store
|
||||||
.*.sw[a-z]
|
.*.sw[a-z]
|
||||||
|
@ -3,9 +3,9 @@ cache: bundler
|
|||||||
before_script: bundle update
|
before_script: bundle update
|
||||||
script: bundle exec rake test
|
script: bundle exec rake test
|
||||||
rvm:
|
rvm:
|
||||||
|
- 2.6.2
|
||||||
- 2.4.2
|
- 2.4.2
|
||||||
- 2.3.5
|
- 2.3.5
|
||||||
- 2.3.0
|
|
||||||
notifications:
|
notifications:
|
||||||
email:
|
email:
|
||||||
on_success: never
|
on_success: never
|
||||||
|
@ -38,6 +38,16 @@ group :jekyll_plugins do
|
|||||||
end
|
end
|
||||||
```
|
```
|
||||||
|
|
||||||
|
## Running integration tests
|
||||||
|
|
||||||
|
Integration tests will do a full jekyll run, and push data to an Algolia index,
|
||||||
|
checking that records and settings are correctly saved. It is the slowest
|
||||||
|
possible kind of tests, but also the one closest to a real implementation.
|
||||||
|
|
||||||
|
Running those tests requires a real Algolia plan. You need to define
|
||||||
|
`ALGOLIA_APPLICATION_ID`, `ALGOLIA_API_KEY` and `ALGOLIA_INDEX_NAME` (we suggest
|
||||||
|
using `direnv` for that), and then run `./scripts/test_integration`.
|
||||||
|
|
||||||
## Linting
|
## Linting
|
||||||
|
|
||||||
Run `rake lint` to check the style of all ruby files. Run `rake
|
Run `rake lint` to check the style of all ruby files. Run `rake
|
||||||
|
80
README.md
@ -1,15 +1,16 @@
|
|||||||
# Jekyll Algolia Plugin
|
# Jekyll Algolia Plugin
|
||||||
|
|
||||||
[![gem version][1]](https://rubygems.org/gems/jekyll-algolia)
|
[![gem version][1]][16]
|
||||||
![ruby][2]
|
![ruby][2]
|
||||||
![jekyll][3]
|
![jekyll][3]
|
||||||
[![build master][4]](https://travis-ci.org/algolia/jekyll-algolia)
|
[![build master][4]][17]
|
||||||
[![coverage master][5]](https://coveralls.io/github/algolia/jekyll-algolia?branch=master)
|
[![build develop][6]][17]
|
||||||
[![build develop][6]](https://travis-ci.org/algolia/jekyll-algolia)
|
[![coverage master][5]][18]
|
||||||
[![coverage develop][7]](https://coveralls.io/github/algolia/jekyll-algolia?branch=develop)
|
|
||||||
|
|
||||||
Add fast and relevant search to your Jekyll site.
|
Add fast and relevant search to your Jekyll site.
|
||||||
|
|
||||||
|
> While this plugin was created by Algolia, it is not an officially supported API client. It is possible that future major versions of Jekyll break compatibility, or require changes.
|
||||||
|
|
||||||
## Usage
|
## Usage
|
||||||
|
|
||||||
```shell
|
```shell
|
||||||
@ -21,7 +22,7 @@ This will push the content of your Jekyll website to your Algolia index.
|
|||||||
## Documentation
|
## Documentation
|
||||||
|
|
||||||
Full documentation can be found on
|
Full documentation can be found on
|
||||||
[https://community.algolia.com/jekyll-algolia/](https://community.algolia.com/jekyll-algolia/getting-started.html)
|
[https://community.algolia.com/jekyll-algolia/][20]
|
||||||
|
|
||||||
## Installation
|
## Installation
|
||||||
|
|
||||||
@ -42,15 +43,15 @@ Once this is done, download all dependencies with `bundle install`.
|
|||||||
|
|
||||||
## Basic configuration
|
## Basic configuration
|
||||||
|
|
||||||
You need to provide certain Algolia credentials for this plugin to *index* your
|
You need to provide certain Algolia credentials for this plugin to _index_ your
|
||||||
site.
|
site.
|
||||||
|
|
||||||
*If you don't yet have an Algolia account, you can open a free [Community plan
|
_If you don't yet have an Algolia account, we suggest that you open a free
|
||||||
here][8]. Once signed in, you can get your
|
[Community plan here][8]. You can find more information about the Algolia plans
|
||||||
credentials from [your dashboard][9].*
|
[in our FAQ][10]._
|
||||||
|
|
||||||
Once you have your credentials, you should define your `application_id` inside
|
Once signed in, you should get your application ID from [your dashboard][9] and
|
||||||
your `_config.yml` file like this:
|
define it inside your `_config.yml` file like this:
|
||||||
|
|
||||||
```yaml
|
```yaml
|
||||||
# _config.yml
|
# _config.yml
|
||||||
@ -72,32 +73,59 @@ Note that `ALGOLIA_API_KEY` should be set to your admin API key.
|
|||||||
|
|
||||||
## More about the Community plan
|
## More about the Community plan
|
||||||
|
|
||||||
The Algolia [Community plan][10] lets you host up to 10k records and perform up to
|
The Algolia [Community plan][11] lets you host up to 10k records and perform up
|
||||||
100k add/edit/delete operations per month (search operations are free). The plan
|
to 100k add/edit/delete operations per month (search operations are free). The
|
||||||
is entirely free, with no time limit.
|
plan is entirely free, with no time limit.
|
||||||
|
|
||||||
What we ask in exchange is that you display a "Search by Algolia" logo next to
|
What we ask in exchange is that you display a "Search by Algolia" logo next to
|
||||||
your search results. Our [InstantSearch libraries][11] have a simple boolean
|
your search results. Our [InstantSearch libraries][12] have a simple boolean
|
||||||
option to toggle that on an off. If you want more flexibility, you can find
|
option to toggle that on an off. If you want more flexibility, you can find
|
||||||
all versions of our logo [here][12].
|
all versions of our logo [here][13].
|
||||||
|
|
||||||
|
If you need more information about the other Algolia plans, you can [check our
|
||||||
|
FAQ][10].
|
||||||
|
|
||||||
# Thanks
|
# Thanks
|
||||||
|
|
||||||
Thanks to [Anatoliy Yastreb][13] for a [great tutorial][14] on creating Jekyll
|
Thanks to [Anatoliy Yastreb][14] for a [great tutorial][15] on creating Jekyll
|
||||||
plugins.
|
plugins.
|
||||||
|
|
||||||
|
|
||||||
[1]: https://badge.fury.io/rb/jekyll-algolia.svg
|
[1]: https://badge.fury.io/rb/jekyll-algolia.svg
|
||||||
|
|
||||||
[2]: https://img.shields.io/badge/ruby-%3E%3D%202.3.0-green.svg
|
[2]: https://img.shields.io/badge/ruby-%3E%3D%202.3.0-green.svg
|
||||||
|
|
||||||
[3]: https://img.shields.io/badge/jekyll-%3E%3D%203.6.0-green.svg
|
[3]: https://img.shields.io/badge/jekyll-%3E%3D%203.6.0-green.svg
|
||||||
|
|
||||||
[4]: https://img.shields.io/badge/dynamic/json.svg?label=build%3Amaster&query=value&uri=https%3A%2F%2Fimg.shields.io%2Ftravis%2Falgolia%2Fjekyll-algolia.json%3Fbranch%3Dmaster
|
[4]: https://img.shields.io/badge/dynamic/json.svg?label=build%3Amaster&query=value&uri=https%3A%2F%2Fimg.shields.io%2Ftravis%2Falgolia%2Fjekyll-algolia.json%3Fbranch%3Dmaster
|
||||||
[5]: https://img.shields.io/badge/dynamic/json.svg?label=coverage%3Amaster&colorB=&prefix=&suffix=%25&query=$.coverage_change&uri=https%3A%2F%2Fcoveralls.io%2Fgithub%2Falgolia%2Fjekyll-algolia.json%3Fbranch%3Dmaster
|
|
||||||
|
[5]: https://coveralls.io/repos/github/algolia/jekyll-algolia/badge.svg?branch=master
|
||||||
|
|
||||||
[6]: https://img.shields.io/badge/dynamic/json.svg?label=build%3Adevelop&query=value&uri=https%3A%2F%2Fimg.shields.io%2Ftravis%2Falgolia%2Fjekyll-algolia.json%3Fbranch%3Ddevelop
|
[6]: https://img.shields.io/badge/dynamic/json.svg?label=build%3Adevelop&query=value&uri=https%3A%2F%2Fimg.shields.io%2Ftravis%2Falgolia%2Fjekyll-algolia.json%3Fbranch%3Ddevelop
|
||||||
[7]: https://img.shields.io/badge/dynamic/json.svg?label=coverage%3Adevelop&colorB=&prefix=&suffix=%25&query=$.coverage_change&uri=https%3A%2F%2Fcoveralls.io%2Fgithub%2Falgolia%2Fjekyll-algolia.json%3Fbranch%3Ddevelop
|
|
||||||
|
[7]: https://coveralls.io/repos/github/algolia/jekyll-algolia/badge.svg?branch=develop
|
||||||
|
|
||||||
[8]: #more-about-the-community-plan
|
[8]: #more-about-the-community-plan
|
||||||
|
|
||||||
[9]: https://www.algolia.com/api-keys
|
[9]: https://www.algolia.com/api-keys
|
||||||
[10]: https://www.algolia.com/users/sign_up/hacker
|
|
||||||
[11]: https://community.algolia.com/instantsearch.js/
|
[10]: https://community.algolia.com/jekyll-algolia/faq.html#how-many-records-will-the-plugin-need
|
||||||
[12]: https://www.algolia.com/press#resources
|
|
||||||
[13]: https://github.com/ayastreb/
|
[11]: https://www.algolia.com/users/sign_up/hacker
|
||||||
[14]: https://ayastreb.me/writing-a-jekyll-plugin/
|
|
||||||
|
[12]: https://community.algolia.com/instantsearch.js/
|
||||||
|
|
||||||
|
[13]: https://www.algolia.com/press/?section=brand-guidelines
|
||||||
|
|
||||||
|
[14]: https://github.com/ayastreb/
|
||||||
|
|
||||||
|
[15]: https://ayastreb.me/writing-a-jekyll-plugin/
|
||||||
|
|
||||||
|
[16]: https://rubygems.org/gems/jekyll-algolia
|
||||||
|
|
||||||
|
[17]: https://travis-ci.org/algolia/jekyll-algolia
|
||||||
|
|
||||||
|
[18]: https://coveralls.io/github/algolia/jekyll-algolia?branch=master
|
||||||
|
|
||||||
|
[19]: https://coveralls.io/github/algolia/jekyll-algolia?branch=develop
|
||||||
|
|
||||||
|
[20]: https://community.algolia.com/jekyll-algolia/getting-started.html
|
||||||
|
@ -27,6 +27,7 @@ const sidebarMenu = [
|
|||||||
items: [
|
items: [
|
||||||
{ title: 'Getting Started', url: 'getting-started.html' },
|
{ title: 'Getting Started', url: 'getting-started.html' },
|
||||||
{ title: 'How it works', url: 'how-it-works.html' },
|
{ title: 'How it works', url: 'how-it-works.html' },
|
||||||
|
{ title: 'FAQ', url: 'faq.html' },
|
||||||
],
|
],
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
|
@ -35,7 +35,7 @@
|
|||||||
"hasha": "3.0.0",
|
"hasha": "3.0.0",
|
||||||
"http-server": "0.10.0",
|
"http-server": "0.10.0",
|
||||||
"jstransformer-markdown-it": "2.0.0",
|
"jstransformer-markdown-it": "2.0.0",
|
||||||
"lodash": "4.17.4",
|
"lodash": "4.17.5",
|
||||||
"markdown-it": "8.4.0",
|
"markdown-it": "8.4.0",
|
||||||
"markdown-it-anchor": "4.0.0",
|
"markdown-it-anchor": "4.0.0",
|
||||||
"metalsmith": "2.3.0",
|
"metalsmith": "2.3.0",
|
||||||
@ -45,7 +45,7 @@
|
|||||||
"metalsmith-sass": "1.4.0",
|
"metalsmith-sass": "1.4.0",
|
||||||
"ms-webpack": "2.0.0",
|
"ms-webpack": "2.0.0",
|
||||||
"node-sass": "4.7.2",
|
"node-sass": "4.7.2",
|
||||||
"nodemon": "1.12.5",
|
"nodemon": "1.18.7",
|
||||||
"postcss": "6.0.14",
|
"postcss": "6.0.14",
|
||||||
"postcss-loader": "2.0.9",
|
"postcss-loader": "2.0.9",
|
||||||
"postcss-scss": "1.0.2",
|
"postcss-scss": "1.0.2",
|
||||||
@ -66,8 +66,8 @@
|
|||||||
"webpack-hot-middleware": "2.21.0"
|
"webpack-hot-middleware": "2.21.0"
|
||||||
},
|
},
|
||||||
"engines": {
|
"engines": {
|
||||||
"node": "^9.2.0",
|
"node": ">=9.2.0",
|
||||||
"yarn": "^1.3.2"
|
"yarn": ">=1.3.2"
|
||||||
},
|
},
|
||||||
"renovate": {
|
"renovate": {
|
||||||
"extends": [
|
"extends": [
|
||||||
|
0
docs-src/src/assets/fonts/algolia-brands-iconfont.eot
Executable file → Normal file
0
docs-src/src/assets/fonts/algolia-brands-iconfont.svg
Executable file → Normal file
Before Width: | Height: | Size: 214 KiB After Width: | Height: | Size: 214 KiB |
0
docs-src/src/assets/fonts/algolia-brands-iconfont.ttf
Executable file → Normal file
0
docs-src/src/assets/fonts/algolia-brands-iconfont.woff
Executable file → Normal file
0
docs-src/src/assets/fonts/algolia-website-iconfont.eot
Executable file → Normal file
0
docs-src/src/assets/fonts/algolia-website-iconfont.svg
Executable file → Normal file
Before Width: | Height: | Size: 54 KiB After Width: | Height: | Size: 54 KiB |
0
docs-src/src/assets/fonts/algolia-website-iconfont.ttf
Executable file → Normal file
0
docs-src/src/assets/fonts/algolia-website-iconfont.woff
Executable file → Normal file
0
docs-src/src/assets/images/github-icon.svg
Executable file → Normal file
Before Width: | Height: | Size: 848 B After Width: | Height: | Size: 848 B |
0
docs-src/src/assets/js/activateClipboard.js
Executable file → Normal file
0
docs-src/src/assets/js/main.js
Executable file → Normal file
100
docs-src/src/faq.md
Normal file
@ -0,0 +1,100 @@
|
|||||||
|
---
|
||||||
|
title: Frequently Asked Questions
|
||||||
|
layout: content-with-menu.pug
|
||||||
|
---
|
||||||
|
|
||||||
|
# Frequently Asked Questions
|
||||||
|
|
||||||
|
## How many records will the plugin need?
|
||||||
|
|
||||||
|
The plugin will not create an exact mapping of `1 page = 1 record`. Instead, it
|
||||||
|
will split all pages into smaller chunks, and each chunk will be saved as a
|
||||||
|
record. Splitting into small chunks is key to offer the best relevance of
|
||||||
|
results.
|
||||||
|
|
||||||
|
The default chunking mechanism is to create one chunk per paragraph of content.
|
||||||
|
So, for a blog post that is made up of 10 paragraphs of text, it will create 10
|
||||||
|
records.
|
||||||
|
|
||||||
|
Estimating the number of records you will need can be tricky as it depends on
|
||||||
|
both the number of pages you have, and on the average length of them. Some
|
||||||
|
configuration options (such as [nodes_to_index][1]) can also influence the final
|
||||||
|
result.
|
||||||
|
|
||||||
|
The following table should give you a ballpark estimate of what to expect. All
|
||||||
|
calculations were done with an average of **15 paragraphs per page**, on a
|
||||||
|
timeline of **one year**.
|
||||||
|
|
||||||
|
| update frequency | # of new pages | # of records | Algolia plan |
|
||||||
|
| --------------------------- | -------------- | ------------ | -------------- |
|
||||||
|
| ~1 new page per week | ~50 | ~750 | [Community][2] |
|
||||||
|
| ~1 new page per day | ~400 | ~6.000 | [Community][3] |
|
||||||
|
| ~2 new pages per day | ~700 | ~10.500 | [Essential][4] |
|
||||||
|
| ~1 new page per hour | ~8800 | ~132.000 | [Essential][5] |
|
||||||
|
| ~1 new page every 5 minutes | ~105.000 | ~1.575.000 | [Plus][6] |
|
||||||
|
| More? | More? | More? | [Business][7] |
|
||||||
|
|
||||||
|
## One of my records is too big. What can I do?
|
||||||
|
|
||||||
|
If you get an error about one of your records being too big, be sure to update
|
||||||
|
the plugin to the latest version. We keep improving the plugin with ways of
|
||||||
|
making the records smaller.
|
||||||
|
|
||||||
|
If you're still having an error, you should check the `.json` log file that has
|
||||||
|
been created in your source directory. This will contain the content of the
|
||||||
|
record that has been rejected. It might give you hints about what went wrong.
|
||||||
|
|
||||||
|
A common cause for this issue often lies in the page HTML. Maybe the HTML is
|
||||||
|
malformed (a tag is not closed for example), or instead of several small
|
||||||
|
paragraphs there is only one large paragraph. This can cause the parser to take
|
||||||
|
the whole page content (instead of small chunks of it) to create the records.
|
||||||
|
|
||||||
|
If you don't find where the issue is coming from, feel free to open a [GitHub
|
||||||
|
issue][8] with a copy of the log file and we'll be happy to help you.
|
||||||
|
|
||||||
|
## How can I tweak the relevance ranking?
|
||||||
|
|
||||||
|
The plugin default configuration will rank results based on their textual
|
||||||
|
relevance. You can adapt the ranking to fit your needs by using a
|
||||||
|
combination of front-matter and Algolia index settings.
|
||||||
|
|
||||||
|
For example, if you know some of your blog posts are popular, you might want to
|
||||||
|
give them a boost in their ranking. To do so, add a `popular: true` entry to the
|
||||||
|
front-matter of such posts. Any custom key added to a front-matter is
|
||||||
|
automatically pushed to their corresponding records.
|
||||||
|
|
||||||
|
Then, you would have to edit your `_config.yml` file to pass a custom
|
||||||
|
`settings.customRanking` value. The `customRanking` is one of the way ranking
|
||||||
|
can be configured in an Algolia index and follows a tie-breaking algorithm. You
|
||||||
|
can find more information about the way it works either in the [official
|
||||||
|
documentation][9] or in [this video][10].
|
||||||
|
|
||||||
|
The default `customRanking` used by the plugin is [defined here][11] and use the
|
||||||
|
date, weight of the header and position in the page by default. You can
|
||||||
|
overwrite it to also take the `popular` flag into account like:
|
||||||
|
|
||||||
|
```yml
|
||||||
|
algolia:
|
||||||
|
settings:
|
||||||
|
customRanking:
|
||||||
|
- desc(popular)
|
||||||
|
- desc(date)
|
||||||
|
- desc(custom_ranking.heading)
|
||||||
|
- asc(custom_ranking.position)
|
||||||
|
```
|
||||||
|
|
||||||
|
This will rank popular posts matching your keywords before other posts. You can
|
||||||
|
use either boolean or numeric values for the `customRanking`.
|
||||||
|
|
||||||
|
[1]: options.html#nodes-to-index
|
||||||
|
[2]: https://www.algolia.com/pricing
|
||||||
|
[3]: https://www.algolia.com/pricing
|
||||||
|
[4]: https://www.algolia.com/pricing
|
||||||
|
[5]: https://www.algolia.com/pricing
|
||||||
|
[6]: https://www.algolia.com/pricing
|
||||||
|
[7]: https://www.algolia.com/pricing
|
||||||
|
[8]: https://github.com/algolia/jekyll-algolia/issues
|
||||||
|
[9]: https://community.algolia.com/jekyll-algolia/options.html#settings
|
||||||
|
[10]: https://www.youtube.com/watch?v=H6crAohtUBw
|
||||||
|
[11]:
|
||||||
|
https://github.com/algolia/jekyll-algolia/blob/develop/lib/jekyll/algolia/configurator.rb#L27-L30
|
@ -10,6 +10,8 @@ layout: content-with-menu.pug
|
|||||||
`jekyll-algolia` is a Jekyll plugin that lets you push all your content in an
|
`jekyll-algolia` is a Jekyll plugin that lets you push all your content in an
|
||||||
Algolia index.
|
Algolia index.
|
||||||
|
|
||||||
|
> While this plugin was created by Algolia, it is not an officially supported API client. It is possible that future major versions of Jekyll break compatibility, or require changes.
|
||||||
|
|
||||||
## Requirements
|
## Requirements
|
||||||
|
|
||||||
You'll need:
|
You'll need:
|
||||||
|
@ -50,6 +50,8 @@ keeping track of the configuration easier.
|
|||||||
# This file should be at the root of your project
|
# This file should be at the root of your project
|
||||||
language: ruby
|
language: ruby
|
||||||
cache: bundler
|
cache: bundler
|
||||||
|
before_install:
|
||||||
|
- gem install bundler
|
||||||
script:
|
script:
|
||||||
- bundle exec jekyll algolia
|
- bundle exec jekyll algolia
|
||||||
branches:
|
branches:
|
||||||
@ -68,6 +70,16 @@ You might have to edit the `branches.only` value to either `master` or
|
|||||||
`gh-pages`, depending on which branch is configured to be deployed in your
|
`gh-pages`, depending on which branch is configured to be deployed in your
|
||||||
GitHub Pages configuration.
|
GitHub Pages configuration.
|
||||||
|
|
||||||
|
### Ignoring vendors
|
||||||
|
|
||||||
|
Travis bundles all gems in the `vendor` directory on its servers, which Jekyll
|
||||||
|
will mistakenly read. This will likely make the process fail. To avoid this,
|
||||||
|
add `vendor` to the `exclude` list in your `_config.yml` file.
|
||||||
|
|
||||||
|
```yml
|
||||||
|
exclude: [vendor]
|
||||||
|
```
|
||||||
|
|
||||||
## Adding the API Key
|
## Adding the API Key
|
||||||
|
|
||||||
The plugin will need your Admin API key to push data. Because you don't want to
|
The plugin will need your Admin API key to push data. Because you don't want to
|
||||||
|
@ -6,8 +6,8 @@ layout: content-with-menu.pug
|
|||||||
# How does this work?
|
# How does this work?
|
||||||
|
|
||||||
This page will give you a bit more insight about how the internals of the plugin
|
This page will give you a bit more insight about how the internals of the plugin
|
||||||
are working. This should give you more context to better understand the various
|
are working. This should give you more context to better understand the options
|
||||||
options you can configure.
|
you can configure.
|
||||||
|
|
||||||
## Extracting data
|
## Extracting data
|
||||||
|
|
||||||
@ -53,26 +53,34 @@ data. Shared data is the metadata of the page it was extracted from (`title`,
|
|||||||
front-matter). Specific data is the paragraph content and, if applicable, the
|
front-matter). Specific data is the paragraph content and, if applicable, the
|
||||||
list of parent headings (based on the `<h1>` and `<h6>` of the page).
|
list of parent headings (based on the `<h1>` and `<h6>` of the page).
|
||||||
|
|
||||||
Using the [distinct setting][1] of the Algolia API, only the best matching
|
Using the [distinct setting][1] of the Algolia API, the best matching
|
||||||
paragraph of each page is returned for a specific query. This greatly improves
|
paragraph of each page is returned for a specific query. This greatly improves
|
||||||
the perceived relevance of the search results as you can highlight specifically
|
the perceived relevance of the search results as you can highlight specifically
|
||||||
the part that was matching.
|
the part that was matching.
|
||||||
|
|
||||||
|
Also note that the response you'll get from the API might be enriched with
|
||||||
|
[\_highlightResult][2] and [\_snippetResult][3] keys. Those keys are
|
||||||
|
automatically added when performing a search and are not part of the saved
|
||||||
|
record.
|
||||||
|
|
||||||
## Pushing data
|
## Pushing data
|
||||||
|
|
||||||
The plugin tries to be smart by using as less operations as possible, to be
|
The plugin tries to be smart by using as less operations as possible, to be
|
||||||
mindful of your Algolia quota. Whenever you run `jekyll algolia`, only records
|
mindful of your Algolia quota. Whenever you run `jekyll algolia`, records
|
||||||
that changed since your last push will be updated.
|
that changed since your last push will be updated.
|
||||||
|
|
||||||
This is made possible because each record is attributed a unique `objectID`,
|
This is made possible because each record is attributed a unique `objectID`,
|
||||||
computed as a hash of the actual content of the record. Whenever the content of
|
computed as a hash of the actual content of the record. Whenever the content of
|
||||||
the record changes, its `objectID` will change as well. This allows us to compare
|
the record changes, its `objectID` will change as well. This allows us to
|
||||||
what is current available in your index and what is about to be pushed, to only
|
compare what is available in your index and what is about to be
|
||||||
update what actually changed.
|
pushed, to update what actually changed.
|
||||||
|
|
||||||
Previous outdated records will be deleted, and new updated records will be added
|
Previous outdated records will be deleted, and new updated records will be added
|
||||||
instead. All those operations are grouped into a batch call, making sure that
|
instead. All those operations are grouped into a batch call, making sure that
|
||||||
the changes are done atomically: your index will never be in an inconsistent
|
the changes are done atomically: your index will never be in an inconsistent
|
||||||
state where records are only partially updated.
|
state where records are partially updated.
|
||||||
|
|
||||||
|
|
||||||
[1]: https://www.algolia.com/doc/guides/ranking/distinct/?language=ruby#distinct-to-index-large-records
|
[1]: https://www.algolia.com/doc/guides/ranking/distinct/?language=ruby#distinct-to-index-large-records
|
||||||
|
[2]: https://www.algolia.com/doc/api-reference/api-methods/search/?language=ruby#method-response-_highlightresult
|
||||||
|
[3]: https://www.algolia.com/doc/api-reference/api-methods/search/?language=ruby#method-response-_snippetresult
|
||||||
|
@ -17,7 +17,7 @@ section.footer-new-cta.footer-new.h300.pos-rel
|
|||||||
.button-holder.h200.p-r-large
|
.button-holder.h200.p-r-large
|
||||||
.spacer16.hidden-md.hidden-sm
|
.spacer16.hidden-md.hidden-sm
|
||||||
span.inline.pos-rel
|
span.inline.pos-rel
|
||||||
a.btn.btn-static-primary.btn-static-shadow-dark(href='https://algolia.com/users/sign_up')
|
a.btn.btn-static-primary.btn-static-shadow-dark(href='https://www.algolia.com/users/sign_up/hacker')
|
||||||
| Get Started
|
| Get Started
|
||||||
i.icon.icon-arrow-right.color-bunting.m-l-small
|
i.icon.icon-arrow-right.color-bunting.m-l-small
|
||||||
|
|
||||||
|
@ -26,16 +26,21 @@ you might want to update the value like this:
|
|||||||
```yml
|
```yml
|
||||||
algolia:
|
algolia:
|
||||||
# Also index AsciiDoc and Textile files
|
# Also index AsciiDoc and Textile files
|
||||||
extensions_to_index: 'html,md,adoc,textile'
|
extensions_to_index:
|
||||||
|
- html
|
||||||
|
- md
|
||||||
|
- adoc
|
||||||
|
- textile
|
||||||
```
|
```
|
||||||
|
|
||||||
## `files_to_exclude`
|
## `files_to_exclude`
|
||||||
|
|
||||||
This option lets you define a blacklist of source files you don't want to index.
|
This option lets you define a list of source files you don't want to index.
|
||||||
|
|
||||||
By default it will exclude all the `index.html` and `index.md` files. Those
|
By default it will exclude the `index.html` and `index.md` files found at the
|
||||||
files are usually not containing much text (landing pages) or containing
|
root. Those files are usually not containing much text (landing pages) or
|
||||||
redundant text (latest blog articles) so they are not included by default.
|
containing redundant text (latest blog articles) so they are not included by
|
||||||
|
default.
|
||||||
|
|
||||||
If you want to index those files, you should set the value to an empty array.
|
If you want to index those files, you should set the value to an empty array.
|
||||||
|
|
||||||
@ -46,7 +51,7 @@ algolia:
|
|||||||
```
|
```
|
||||||
|
|
||||||
If you want to exclude more files, you should add them to the array. Note that
|
If you want to exclude more files, you should add them to the array. Note that
|
||||||
you can use glob patterns to exclude several files at once.
|
you can use glob patterns (`*` and `**`) to exclude several files at once.
|
||||||
|
|
||||||
```yml
|
```yml
|
||||||
algolia:
|
algolia:
|
||||||
@ -57,6 +62,7 @@ algolia:
|
|||||||
- excluded-file.html
|
- excluded-file.html
|
||||||
- _posts/2017-01-20-date-to-forget.md
|
- _posts/2017-01-20-date-to-forget.md
|
||||||
- subdirectory/*.html
|
- subdirectory/*.html
|
||||||
|
- **/*.tmp.html
|
||||||
```
|
```
|
||||||
|
|
||||||
_Note that some files (pagination pages, static assets, etc) will **always** be
|
_Note that some files (pagination pages, static assets, etc) will **always** be
|
||||||
@ -100,7 +106,17 @@ algolia:
|
|||||||
```
|
```
|
||||||
|
|
||||||
Settings defined here will take precedence over any setting you manually defined
|
Settings defined here will take precedence over any setting you manually defined
|
||||||
through the [Algolia dashboard][5] UI, though.
|
through the [Algolia dashboard][5] UI, though. If you'd like this not to happen
|
||||||
|
at all, and only take the dashboard settings in account, pass `false` to the
|
||||||
|
settings configuration.
|
||||||
|
|
||||||
|
```yml
|
||||||
|
algolia:
|
||||||
|
settings: false
|
||||||
|
```
|
||||||
|
|
||||||
|
We suggest users to at least run with the default settings once, so that the default
|
||||||
|
relevance settings are set, which you can override via the dashboard after.
|
||||||
|
|
||||||
## `indexing_batch_size`
|
## `indexing_batch_size`
|
||||||
|
|
||||||
@ -120,6 +136,24 @@ algolia:
|
|||||||
indexing_batch_size: 500
|
indexing_batch_size: 500
|
||||||
```
|
```
|
||||||
|
|
||||||
|
## `max_record_size`
|
||||||
|
|
||||||
|
**This is an advanced option. It has no effect on Community plans.**
|
||||||
|
|
||||||
|
If you're using a paid Algolia plan, you can push records that weight up to 20Kb
|
||||||
|
(as opposed to 10Kb with the free Community plan). This option allows you to
|
||||||
|
adjust the maximum size of one record (in bytes).
|
||||||
|
|
||||||
|
```yml
|
||||||
|
algolia:
|
||||||
|
# Recommended setting for paid plans
|
||||||
|
max_record_size: 20000
|
||||||
|
```
|
||||||
|
|
||||||
|
_Note that if you push a record that is larger than your allowed limit,
|
||||||
|
the push will be rejected by the API. This might result in incomplete data being
|
||||||
|
uploaded._
|
||||||
|
|
||||||
|
|
||||||
[1]: ./how-it-works.html
|
[1]: ./how-it-works.html
|
||||||
[2]: http://www.methods.co.nz/asciidoc/
|
[2]: http://www.methods.co.nz/asciidoc/
|
||||||
|
0
docs-src/src/stylesheets/vendors/bootstrap/_alerts.scss
vendored
Executable file → Normal file
0
docs-src/src/stylesheets/vendors/bootstrap/_badges.scss
vendored
Executable file → Normal file
0
docs-src/src/stylesheets/vendors/bootstrap/_breadcrumbs.scss
vendored
Executable file → Normal file
0
docs-src/src/stylesheets/vendors/bootstrap/_button-groups.scss
vendored
Executable file → Normal file
0
docs-src/src/stylesheets/vendors/bootstrap/_buttons.scss
vendored
Executable file → Normal file
0
docs-src/src/stylesheets/vendors/bootstrap/_carousel.scss
vendored
Executable file → Normal file
0
docs-src/src/stylesheets/vendors/bootstrap/_close.scss
vendored
Executable file → Normal file
0
docs-src/src/stylesheets/vendors/bootstrap/_code.scss
vendored
Executable file → Normal file
0
docs-src/src/stylesheets/vendors/bootstrap/_component-animations.scss
vendored
Executable file → Normal file
0
docs-src/src/stylesheets/vendors/bootstrap/_dropdowns.scss
vendored
Executable file → Normal file
0
docs-src/src/stylesheets/vendors/bootstrap/_forms.scss
vendored
Executable file → Normal file
0
docs-src/src/stylesheets/vendors/bootstrap/_glyphicons.scss
vendored
Executable file → Normal file
0
docs-src/src/stylesheets/vendors/bootstrap/_grid.scss
vendored
Executable file → Normal file
0
docs-src/src/stylesheets/vendors/bootstrap/_input-groups.scss
vendored
Executable file → Normal file
0
docs-src/src/stylesheets/vendors/bootstrap/_jumbotron.scss
vendored
Executable file → Normal file
0
docs-src/src/stylesheets/vendors/bootstrap/_labels.scss
vendored
Executable file → Normal file
0
docs-src/src/stylesheets/vendors/bootstrap/_list-group.scss
vendored
Executable file → Normal file
0
docs-src/src/stylesheets/vendors/bootstrap/_media.scss
vendored
Executable file → Normal file
0
docs-src/src/stylesheets/vendors/bootstrap/_mixins.scss
vendored
Executable file → Normal file
0
docs-src/src/stylesheets/vendors/bootstrap/_modals.scss
vendored
Executable file → Normal file
0
docs-src/src/stylesheets/vendors/bootstrap/_navbar.scss
vendored
Executable file → Normal file
0
docs-src/src/stylesheets/vendors/bootstrap/_navs.scss
vendored
Executable file → Normal file
0
docs-src/src/stylesheets/vendors/bootstrap/_normalize.scss
vendored
Executable file → Normal file
0
docs-src/src/stylesheets/vendors/bootstrap/_pager.scss
vendored
Executable file → Normal file
0
docs-src/src/stylesheets/vendors/bootstrap/_pagination.scss
vendored
Executable file → Normal file
0
docs-src/src/stylesheets/vendors/bootstrap/_panels.scss
vendored
Executable file → Normal file
0
docs-src/src/stylesheets/vendors/bootstrap/_popovers.scss
vendored
Executable file → Normal file
0
docs-src/src/stylesheets/vendors/bootstrap/_print.scss
vendored
Executable file → Normal file
0
docs-src/src/stylesheets/vendors/bootstrap/_progress-bars.scss
vendored
Executable file → Normal file
0
docs-src/src/stylesheets/vendors/bootstrap/_responsive-embed.scss
vendored
Executable file → Normal file
0
docs-src/src/stylesheets/vendors/bootstrap/_responsive-utilities.scss
vendored
Executable file → Normal file
0
docs-src/src/stylesheets/vendors/bootstrap/_scaffolding.scss
vendored
Executable file → Normal file
0
docs-src/src/stylesheets/vendors/bootstrap/_tables.scss
vendored
Executable file → Normal file
0
docs-src/src/stylesheets/vendors/bootstrap/_theme.scss
vendored
Executable file → Normal file
0
docs-src/src/stylesheets/vendors/bootstrap/_thumbnails.scss
vendored
Executable file → Normal file
0
docs-src/src/stylesheets/vendors/bootstrap/_tooltip.scss
vendored
Executable file → Normal file
0
docs-src/src/stylesheets/vendors/bootstrap/_type.scss
vendored
Executable file → Normal file
0
docs-src/src/stylesheets/vendors/bootstrap/_utilities.scss
vendored
Executable file → Normal file
0
docs-src/src/stylesheets/vendors/bootstrap/_variables.scss
vendored
Executable file → Normal file
0
docs-src/src/stylesheets/vendors/bootstrap/_wells.scss
vendored
Executable file → Normal file
0
docs-src/src/stylesheets/vendors/bootstrap/mixins/_alerts.scss
vendored
Executable file → Normal file
0
docs-src/src/stylesheets/vendors/bootstrap/mixins/_background-variant.scss
vendored
Executable file → Normal file
0
docs-src/src/stylesheets/vendors/bootstrap/mixins/_border-radius.scss
vendored
Executable file → Normal file
0
docs-src/src/stylesheets/vendors/bootstrap/mixins/_buttons.scss
vendored
Executable file → Normal file
0
docs-src/src/stylesheets/vendors/bootstrap/mixins/_center-block.scss
vendored
Executable file → Normal file
0
docs-src/src/stylesheets/vendors/bootstrap/mixins/_clearfix.scss
vendored
Executable file → Normal file
0
docs-src/src/stylesheets/vendors/bootstrap/mixins/_forms.scss
vendored
Executable file → Normal file
0
docs-src/src/stylesheets/vendors/bootstrap/mixins/_gradients.scss
vendored
Executable file → Normal file
0
docs-src/src/stylesheets/vendors/bootstrap/mixins/_grid-framework.scss
vendored
Executable file → Normal file
0
docs-src/src/stylesheets/vendors/bootstrap/mixins/_grid.scss
vendored
Executable file → Normal file
0
docs-src/src/stylesheets/vendors/bootstrap/mixins/_hide-text.scss
vendored
Executable file → Normal file
0
docs-src/src/stylesheets/vendors/bootstrap/mixins/_image.scss
vendored
Executable file → Normal file
0
docs-src/src/stylesheets/vendors/bootstrap/mixins/_labels.scss
vendored
Executable file → Normal file
0
docs-src/src/stylesheets/vendors/bootstrap/mixins/_list-group.scss
vendored
Executable file → Normal file
0
docs-src/src/stylesheets/vendors/bootstrap/mixins/_nav-divider.scss
vendored
Executable file → Normal file
0
docs-src/src/stylesheets/vendors/bootstrap/mixins/_nav-vertical-align.scss
vendored
Executable file → Normal file
0
docs-src/src/stylesheets/vendors/bootstrap/mixins/_opacity.scss
vendored
Executable file → Normal file
0
docs-src/src/stylesheets/vendors/bootstrap/mixins/_pagination.scss
vendored
Executable file → Normal file
0
docs-src/src/stylesheets/vendors/bootstrap/mixins/_panels.scss
vendored
Executable file → Normal file
0
docs-src/src/stylesheets/vendors/bootstrap/mixins/_progress-bar.scss
vendored
Executable file → Normal file
0
docs-src/src/stylesheets/vendors/bootstrap/mixins/_reset-filter.scss
vendored
Executable file → Normal file
0
docs-src/src/stylesheets/vendors/bootstrap/mixins/_resize.scss
vendored
Executable file → Normal file
0
docs-src/src/stylesheets/vendors/bootstrap/mixins/_responsive-visibility.scss
vendored
Executable file → Normal file
0
docs-src/src/stylesheets/vendors/bootstrap/mixins/_size.scss
vendored
Executable file → Normal file
0
docs-src/src/stylesheets/vendors/bootstrap/mixins/_tab-focus.scss
vendored
Executable file → Normal file
0
docs-src/src/stylesheets/vendors/bootstrap/mixins/_table-row.scss
vendored
Executable file → Normal file
0
docs-src/src/stylesheets/vendors/bootstrap/mixins/_text-emphasis.scss
vendored
Executable file → Normal file
0
docs-src/src/stylesheets/vendors/bootstrap/mixins/_text-overflow.scss
vendored
Executable file → Normal file
0
docs-src/src/stylesheets/vendors/bootstrap/mixins/_vendor-prefixes.scss
vendored
Executable file → Normal file
@ -11,17 +11,23 @@ to add search into your own design.
|
|||||||
|
|
||||||
Some themes already have `jekyll-algolia` embedded by default:
|
Some themes already have `jekyll-algolia` embedded by default:
|
||||||
|
|
||||||
- [Minimal Mistakes][3], by
|
- [Minimal Mistakes][3], by [@mmistakes][4]
|
||||||
[@mmistakes][4]
|
- [GaeBlogx][5], by [@SeraphRoy][6]
|
||||||
|
- [Sakura][7] ([live demo][8]), by [@kimfucious][9]
|
||||||
|
|
||||||
## Add your own
|
## Add your own
|
||||||
|
|
||||||
If you're maintaining a theme using `jekyll-algolia`, feel free to [edit this
|
If you're maintaining a theme using `jekyll-algolia`, feel free to [edit this
|
||||||
page][5] to add your theme to the list.
|
page][10] to add your theme to the list.
|
||||||
|
|
||||||
|
|
||||||
[1]: ./blog.html
|
[1]: ./blog.html
|
||||||
[2]: https://github.com/jekyll/minima
|
[2]: https://github.com/jekyll/minima
|
||||||
[3]: https://mmistakes.github.io/minimal-mistakes/
|
[3]: https://mmistakes.github.io/minimal-mistakes/
|
||||||
[4]: https://github.com/mmistakes
|
[4]: https://github.com/mmistakes
|
||||||
[5]: https://github.com/algolia/jekyll-algolia/edit/develop/docs-src/src/themes.md
|
[5]: https://github.com/SeraphRoy/GaeBlogx
|
||||||
|
[6]: https://www.gaeblogx.com/
|
||||||
|
[7]: https://github.com/kimfucious/sakura
|
||||||
|
[8]: https://sakura.abts.io/
|
||||||
|
[9]: https://github.com/kimfucious
|
||||||
|
[10]: https://github.com/algolia/jekyll-algolia/edit/develop/docs-src/src/themes.md
|
||||||
|
0
docs/assets/fonts/algolia-brands-iconfont-d01c8ae49de097f10d78dd3702fb7cae.svg
Executable file → Normal file
Before Width: | Height: | Size: 214 KiB After Width: | Height: | Size: 214 KiB |
0
docs/assets/fonts/algolia-brands-iconfont.eot
Executable file → Normal file
0
docs/assets/fonts/algolia-brands-iconfont.ttf
Executable file → Normal file
0
docs/assets/fonts/algolia-brands-iconfont.woff
Executable file → Normal file
0
docs/assets/fonts/algolia-website-iconfont-7580da6e34d1e820855fc2ab3f53bb25.svg
Executable file → Normal file
Before Width: | Height: | Size: 54 KiB After Width: | Height: | Size: 54 KiB |