从安装到demo,商品按照标签相关度排序解决方案之开源全文检索引擎xunsearch

来源:互联网 发布:ubuntu wake on lan 编辑:程序博客网 时间:2024/05/09 14:49

公司老总昨天提出了一个需求,希望根据商品的风格标签来推荐相关商品,越是标签相同高的商品就排序在前。

一个商品可能有多个标签。比如:嘻哈、激情派、牛仔,那么有这三个标签的商品就优先显示。

以前看过有一个国产开源的全文检索引擎xunsearch,我看了文档试用了官方demo,觉得可能适合我的项目。至于不用sphinx,是因为我从来没有搭建过sphinx,对比了之后,觉得xunsearch上手简单,加上对中文支持比较好,而且我们的要求相对来说比较简单,所以就直接选择了它。

 

如果通过标签查询数据库,还需要通过各种循环计算,几百个商品还能支撑一下,几千几万个商品的时候那不是直接崩溃,至于老总说能不能通过算法来解决的时候,我直接否决了,用PHP的算法,这是坑爹啊。

 

下面我就要要记录xunsearch的安装和demo搭建了,在这之前我要说下我的领悟:

       设计数据库结构的时候,永远不要认为怎么搭建关系链方便就怎么做,一定要从整个项目出发从可能用到的第三方软件适用性出发

       我要庆幸,当时在设计数据库的时候,神经兮兮的搞了一个以逗号分隔的风格id字段冗余,这在我后面的实际demo搭建中起到了很大的作用。

       什么?其实我并没有想到要给大家说安装教程,谢谢,这些官方网站有,顺便还可以看看文档。当然,安装的时候可能出现乱码,导致选择安装路径的时候出错,这点没关系,换和ssh客户端就好了。

       中间有执行php的步骤,如果直接不能运行,可以在前面加上php的bin目录,如/usr/local/php/bin/php xxxx.php

       xunsearch提供的辅助工具也很丰富

 

       我将商品数据库导入到了xunsearch,我们有一个字段tagid是存储标签的id冗余的,我们可以在xunsearch的配置文件中将tagid的tokenizer分词器设置为split

 

       最终效果:

数据请求端将某商品的标签id组合发过来,就可以按照相似度来获取其他商品了

排除自己:125,143,147,155 NOT id:10024