hibikilogy / hibikilogy.github.io

《京吹学报》
https://hibikilogy.github.io
278 stars 25 forks source link

关于搜索功能 #52

Closed lrioxh closed 7 months ago

lrioxh commented 8 months ago

自己尝试用 lunrSimple-Jekyll-Search 实现了下站内搜索,功能可以实现,但是有一些问题,主要是布局样式问题

最后,菜鸡前端调布局样式真的苦手,希望有大佬帮忙改改,参见代码以及效果演示页面

编:改成在导航栏实现外部搜索,独立搜索页列出两个搜索框分别用lunr和Simple-Jekyll-Search

gbccccc commented 8 months ago

我晚点回来也想想一下你这几个方案哪个合适 另外想问问你有遇到我另一个issue里提到的一个本地部署问题吗?非常感谢!

lrioxh commented 8 months ago

有遇到我另一个issue里提到的一个本地部署问题吗?非常感谢!

有遇到,我按照jekyll报错本地加了plugins: [jekyll-paginate],不过既然线上能正常渲染,应该不重要(

btw我在我那边的线上测试页面试了下gem: 和plugins: 共存,应该正常没看出啥问题

gbccccc commented 8 months ago

有遇到我另一个issue里提到的一个本地部署问题吗?非常感谢!

有遇到,我按照jekyll报错本地加了plugins: [jekyll-paginate],不过既然线上能正常渲染,应该不重要(

btw我在我那边的线上测试页面试了下gem: 和plugins: 共存,应该正常没看出啥问题

233333那看来不是我的问题了,我昨天又回去翻了翻文档,好像是Jekyll 3.5版本把gem属性改成了plugins。但是还是挺麻烦的,每次我 commit 都要注意把 _config.yml 的修改取消掉(捂脸

另外关于你的这几个方案,除了外部搜索引擎方案我觉得不太合适以外,我觉得都有可取之处,想了想感觉可以融合一下。

这个是我关于搜索功能的 Navigation 设想:

  1. 主页效果基本不变,上方增加一个 Navigation bar
  2. 搜索时即时生成部分结果,点击结果可以直接跳转到文章
  3. 如果不点击,而是敲击enter(或点击“搜索”按钮),跳转到搜索结果页,结果页应该与主页的视觉效果保持一致
  4. 具体的搜索实现看你觉得哪个方案更方便就行

另外 jekyll-paginate 的分页比较僵硬,应该是不适用于搜索结果的分页的。如果要引入对搜索结果的分页的话,我感觉最好干脆把 jekyll-paginate 踢出这个项目,重新实现分页。

不知道你觉得我上面说得有没有道理(?

lrioxh commented 8 months ago

每次我 commit 都要注意把 _config.yml 的修改取消掉

我觉得其实可以直接commit上得了哈哈,我那里gems: [jekyll-paginate]plugins: [jekyll-paginate]都在,线上本地都没啥问题;另外config不常改的话可以不add或者干脆ignore掉(

关于搜索功能的 Navigation 设想

这个是很合理的搜索功能实现,我尝试实现的时候遇到了包括布局样式的一些问题,比如搜索时即时生成部分结果,点击结果可以直接跳转到文章这个,实现效果对不同屏幕,横屏和竖屏,很容易出现错位(我前端太菜了);然后lunr的中文分词不好意味着,比如搜伞木伞木希美都没有结果,这太怪了233(因为不是常见中文词,lunr也可以用jieba或其他分词库,但是这个一般是在服务器上跑的);Simple-Jekyll-Search正则匹配不以相关度优先其实也很反直觉,搜索范围限制在标题+tag到可以胜任,这个可以加上;

还有个办法是本地生成分词文件,上传用于搜索,添加文章就需要多一步操作,不知道可不可以action自动完成,我需要研究一下

所以我权衡实用性考虑提了外部搜索引擎的pr,后续可能在调好样式后加上正则搜索标题+tag的即时生成部分结果,主要是马上吹3开播了,先实现一版方便新朋友

外部搜索引擎方案我觉得不太合适

我比较好奇为啥233,用外部搜索的静态网站其实不少,比如 openssl。当然bing界面是有点乱,google或duckduckgo会整洁不少,但是不方便墙内。话说都github了,要不就用google吧(。以google为例

gbccccc commented 8 months ago

关于搜索的原理,其实我的了解不是很深,具体实现我实在给不了什么建议(捂脸),所以我上面给出的也仅仅是 Navigation 的设计建议。但是具体的搜索效果我觉得倒是可以慢慢迭代,毕竟即使是那些真正的商业软件/论坛的搜索功能还有很多也都是纯纯依托答辩,啥都搜不到(点名百度贴吧)

关于外部搜索引擎,我只是本能地觉得,引入一个外部搜索引擎对一个网站而言,总感觉会有些突兀,当然可能也只是个人偏见吧。另外google和github的“墙”还是有不小差距的,我自己上github的时候也不是开真的梯子,所以即使要用这个方案,也还是继续用bing吧。

顺便感慨一下,吹3要开播了这个仓库终于又活跃起来了233333

lrioxh commented 8 months ago

我是后端选手,纯静态搜索也是现学现卖233

我是建议先合了bing的用着,功能上肯定比静态搜索完备。后续转站内静态搜索的话,我至少得解决一下布局样式问题

TODO:

最近忙春招,有没有前端大佬help一下(

lrioxh commented 8 months ago

又尝试了下可以通过trick加空格让junr实现相对合理的结果,虽然从精确找文章的角度不如外部引擎,至少看着不奇怪了

但是不知道什么时候改好,所以还是建议先合了bing的用着(

ps,我去nju,我隔壁seu的233333

gbccccc commented 7 months ago

又尝试了下可以通过trick加空格让junr实现相对合理的结果,虽然从精确找文章的角度不如外部引擎,至少看着不奇怪了

但是不知道什么时候改好,所以还是建议先合了bing的用着(

~ps,我去nju,我隔壁seu的233333~

草,原来是车大的兄弟23333333 我没有合并权限,你可以喊一下 @NozoMizore7

NozoMizore7 commented 7 months ago

已合并