Django搭建的网站如何实现全站搜索
问题:网站后台采用django框架搭建,现在想要做一个全站搜索的功能,请教一下有什么好的解决方案吗?
网上搜了一下,比如:haystack,sphinx都是全文索引的资料,并不是我想要的。
想要实现的功能:
比如网站有A,B,C,D,E这几个模型,搜索“keywords”,可以把5个模型中标题包含“keywords”的返回就行了。
参考:马蜂窝网站的搜索功能
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(4)
这几个表(模型)是不是有很多相同的字段、属性? 否则,一般不太可能有业务场景需要同时检索。
如果是,那么可以把所有 共有的字段 提出来,放到一个 base表(模型)里,然后A B C D E分别继承base。
我最近在研究Elasticsearch。
可以新建一个叫做model的索引。存id,title,url三个字段。可能还需要一个中文分词插件。
使用restapi或者elasticsearch的python sdk交互。
新建model的索引可以详细点吗?
可以直接用request获取搜索的关键词,然后进行数据库查询,用fliter方法进行过滤,注意这个方法里要写成对应的信息__icontains=获取到的关键词,加i是不区分大小写。例如你要搜索的东西是要在name字段中检索,就在filter方法里面写成name_icontains=关键词 的形式,Django的model会自动识别这种写法然后帮你进行查询,这里给段代码吧
`
这里的Q就是或的意思,这是djang自带的库里面的。
如果你是用的elasticsearch就去读相关的文档。