如何在Jekyll博客中添加网站搜索功能?

21

我正在考虑将我的网站从Wordpress迁移到Jekyll,并希望保持对网站的全文搜索能力。WordPress搜索速度快,可靠,并且与主题格式很好地匹配,但我还没有找到一个像样的替代方案。

有一个插件解决方案使用indextank,但我不想通过商业API绑定搜索,并由用户排名搜索项,我只是想要与WordPress搜索相当的东西。

我也研究了google Ajax api,但我不想在网站上添加一个漂浮的ajax搜索框。

当然,可以使用Google的网站搜索,但我发现这不太可靠。(我已经几年没用过这个功能,所以也许我错了)。

既然所有帖子都是以纯文本形式提供的,似乎应该不难创建一个索引来对它们进行搜索,但我还没有找到一个好的解决方案。有任何建议或示例吗?


你是在自己的Web服务器上运行吗?(即,您可以运行服务器端脚本吗?) - huon
我是,不过我很想知道是否有适用于托管在Github上的网站的解决方案。 - cboettig
2
在GitHub上,你最好的选择是使用JavaScript搜索,比如Tipue Search - manatwork
@mantawork -- 不错的建议。我不清楚Tipue Search如何生成tipuesearch_data.js中的数据--这是否需要手动输入? - cboettig
回答@manatwork:不需要手动输入数据。Alex Pearce在这里有一篇很棒的博客文章,其中包括一个示例,说明如何动态创建站点数据(建议将“null”替换为“false”)。该示例创建了一个.json文件,用于创建标签页面,但该代码也可以创建一个.js文件,帮助返回用户输入的Tipue搜索结果。 - kaidez
4个回答

20

Jekyll + lunr.js = 在您的浏览器中使用JavaScript为您的Jekyll静态网站提供强大的全文搜索


谢谢!这样做会将所有网站文本加载到浏览器内存中吗?似乎这种解决方案可能不太可扩展,尽管显然需要大量文本才能占用很多空间。我目前正在使用Marran的词干搜索的修改版本:http://www.marran.com/tech/jquery-full-text-indexing-on-jekyll/ - cboettig
@cboettig 是的,它会将整个索引加载到内存中进行搜索。这取决于您的Jekyll网站的大小,对于大型网站来说是需要考虑的事情。不确定需要多大才会出现问题。 - Ben Smith
Iron.io 正在转向使用 Lunr.js,是否有一些执行用户体验很好的站点的优秀实例? - Stephen Nguyen
@BenSmith 它能在服务器上运行吗?我按照你的步骤操作了,当我使用jekyll server时它可以工作。但是当我将其上传到服务器上时,它就无法工作了。 - Samuel
Lunr.js是一个用JavaScript编写的静态全文搜索引擎,不需要任何后端或服务器。 - Miloš Miljković

5

有一个探索的选项是使用Google自定义搜索

你提到过尝试过使用谷歌,但我不确定你是否指的是如此处所述的自定义搜索框。发表这篇文章以帮助你。


我了解谷歌自定义搜索只是站内搜索的包装器,它允许你嵌入结果(在免费版本中带有广告)到你网站的正文中。看起来他们确实让你可以自定义CSS来匹配你的网站样式。这很有帮助,但不完全是我想要的。 - cboettig
我正在努力让我的Jekyll网站运行起来。如果我想到了其他的方法,我会在这里回复的。 - Alan W. Smith
在尝试了Ben的lunr.js解决方案(如上所述)和Marran的内存消耗较少的快速词干搜索之后,我决定回到这个简单的Google搜索。当我需要不同的东西时,我只需针对我的repo副本进行grep;-) - cboettig

3

3

1
另外,您需要在Search SaaS上拥有一个帐户。您可以在http://www.indexden.com免费获得它。 - Iaroslav Vorozhko

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接