美文网首页@IT·互联网程序员
如何写一个微信公众号搜索引擎

如何写一个微信公众号搜索引擎

作者: Lupino | 来源:发表于2017-05-30 15:00 被阅读826次

引言

云滩公众号搜索引擎是利用 Go中文分词bleve 构建的。
本文将展示整个搜索引擎的构建过程。

分析

http://mp.weixin.qq.com/s/sgc8IzjkbSikS2YIJdO1QA

随便打开一篇公众号文章然后查看他的源代码

我们可以通过正则表达式获取这里的数据用于构建唯一的 URL 地址。

这段内容这是标题,摘要和缩略图

文章则放在 div#js_content 里面,于是可以通过 goquery 来获取文章的内容。

构建文档数据结构

type Document struct {
    ID        string `json:"uri"`
    Title     string `json:"title,omitempty"`
    Summary   string `json:"summary,omitempty"`
    Content   string `json:"content,omitempty"`
    Meta      string `json:"meta,omitempty"`
    CreatedAt int64  `json:"created_at,omitempty"`
}
  • Document.ID 为拼装的链接地址
  • Document.Title 为标题
  • Document.Summary 为摘要
  • Document.Content 为内容
  • Document.Meta 为额外信息,如封面图
  • Document.CreatedAt 为创建时间

创建 Mapping 并使用 sego 分词

tokenizer 我自己构建出来的分词微服务

_mapping := bleve.NewIndexMapping()
_mapping.AddCustomTokenizer("sego",
    map[string]interface{}{
        "host": *tokenizerHost,
        "type": tokenizer.Name,
    }
)
_mapping.AddCustomAnalyzer("sego",
    map[string]interface{}{
        "type": custom.Name,
        "char_filters": []string{
            html.Name,
        },
        "tokenizer": "sego",
        "token_filters": []string{
            "possessive_en",
            "to_lower",
            "stop_en",
        },
    },
)
_mapping.DefaultAnalyzer = tokenizer.Name

创建索引并索引文章

index, err := bleve.New("weixin-search.bleve", _mapping)
doc := Document{....}
index.Index(doc.ID, doc)

搜索查询

index, _ := bleve.Open("weixin-search.bleve")
query := bleve.NewQueryStringQuery("剽悍晨读")
searchRequest := bleve.NewSearchRequest(query)
searchResult, _ := index.Search(searchRequest)

结语

到此为止搜索引擎基本完成。
Demo: http://t.cn/RaphK4a

完整的代码我会在合适的时候发布到 Github 上面,敬请期待。
需要使用的话,详见: http://www.jianshu.com/p/221e056c9251

需要帮助的话扫微信

如果觉得文章好,对你有帮助就来关注我吧。

相关文章

  • 免费下载百度文库、vip视频

    微信公众号:sharingplus如有问题或建议,请公众号留言 最近本来打算写一个自己使用的综合搜索引擎,由于我对...

  • 2招轻松玩转微信公众号霸屏,轻松打造全自动流量鱼塘

    关于微信公众号搜索引擎是什么?这里就不多介绍了,重点是和大家分享微信公号号如何实现霸屏! 第一招:准备公众号 准备...

  • 学习小组Day1笔记-四海

    学习搜索引擎 谷歌 百度 搜狗微信 关注微信公众号:生信技能书、生信菜鸟团、biobabble、生信媛、生信宝典、...

  • 如何写一个微信公众号搜索引擎

    引言 云滩公众号搜索引擎是利用 Go中文分词 和 bleve 构建的。本文将展示整个搜索引擎的构建过程。 分析 h...

  • 微信公众号的运营技巧

    微信公众号的运营技巧 1)重视定位:考虑微信公众号要承担的职责,给微信公众号一个合适的身份。定位微信公众号的形象 ...

  • 新手公众运营详解

    提到微信公众号大家都不会感到陌生,然而你们知道微信公众号是如何运营的吗?你每天看到的那些文章又是如何写出来的呢?下...

  • 企业为什么一定要做微信公众号?

    微信公众号 微信公众号的作用: 1、品牌宣传,一个运营良好的公众号可以通过微信公众号建立一个非常正面的品牌形象; ...

  • H5页面调用微信授权获取code

    H5调用微信授权获取code(微信公众号微信页面开发网页授权) 一、首先你要有一个公众号(公众号、订阅号),微信公...

  • 微信公众号的发展趋势

    微信公众平台,简称公众号。曾命名为“官号平台”、“媒体平台”、微信公众号,最终定位为“公众平台”,无疑看到一个微信...

  • 微信公众号如何取名好?

    微信公众号如何取名好?任何一个产品都需要有一个好的名字,微信营销也一样。 一、微信公众号取名 微信公众号的名字就是...

网友评论

    本文标题:如何写一个微信公众号搜索引擎

    本文链接:https://www.haomeiwen.com/subject/uutrfxtx.html