我来做百科(第二十天) A

简介:
不知道过了多少天了,凑个整的二十好了。下面写写这段时间的进展吧。

上一次写到完成基本的词条管理,内容管理,会员管理,评论管理,接着我做了tag系统。tag系统分了两个表,一个记录tag的内容,一个记录tag和内容的关联。这样的好处是容易处理,也更符合范式(不知有没有说错)。后台管理也不难做。难做的是tag的搜索系统,因为我想做成百度百科那样可以tag和关键字一起查找,还可以多个tag的“和”跟“或”查找。这个就要花点心思了,首先是判断查找的方式,接着是数据库怎么根据tag查找。查找方式我用“&”和“|”分开,数据库的查找就要想想了。我的设计是:第一步根据tag找到关联内容再找到关联词条,获取相关词条id,第二步筛选词条id,如果是“|”就不用筛选把重复的id移除就可以,“&”的话就是重复的id才留下。
Tag t  =   new  Tag();
string [] arrTag;
if  (tag.Contains( "& " ))
{
    arrTag 
= Function.GetDistinctStringArray(tag.Replace("&"" "));

    
if (arrTag != null)
    
{
        List
<int> lTag = new List<int>();

        
int i = 0;
        
foreach (string s in arrTag)
        
{
            
if (i++ == 0)
            
{
                lTag.AddRange(t.GetTagLemmaByName(s));
            }

            
else
            
{
                List
<int> lTemp = new List<int>();
                
foreach (int id in t.GetTagLemmaByName(s))
                
{
                    
if (lTag.Contains(id))
                    
{
                        lTemp.Add(id);
                    }

                }

                lTag 
= lTemp;
            }

        }

        arrLemma 
= lTag.ToArray();
    }

}

else
{
    arrTag 
= Function.GetDistinctStringArray(tag.Replace("|"" "));

    
if (arrTag != null)
    
{
        List
<int> lTag = new List<int>();
        
foreach (string s in arrTag)
        
{
            lTag.AddRange(t.GetTagLemmaByName(s));
        }

        arrLemma 
= lTag.ToArray();
    }

}

我想既然我用了“&”和“|”作为搜索判断符号,那我添加tag时就必须对这两个符号过滤,反正要过滤就把所有的符号也过滤掉吧,安心。但我看百度百科好像没有过滤符号的,于是我在百度百科添加了一个带“&”的tag看会怎样,结果搜索时果然出问题,想不到百度会没留意这个bug。

我自己也测试一下:
tag:鳙鱼|海豚 成功!
tag:地理&珠三角
 成功!

再做一个tag列表页面,这样tag系统就基本完成了。

本文转自博客园cloudgamer的博客,原文链接:我来做百科(第二十天) A,如需转载请自行联系原博主。

相关文章
|
9月前
|
弹性计算 NoSQL 关系型数据库
晕~阿里云降价了!没买的来看看吧!
晕~阿里云降价了!还没买的来看看吧!2024年最新阿里云降价,立即生效!百款产品直降,平均降幅20%,阿里云希望通过此次大规模降价,让更多企业和开发者用上先进的公共云服务,加速云计算在中国各行各业的普及和发展。这次降价包括云服务器ECS、对象存储OSS、云数据库都降价了,真降价,直降价:百款产品直降,平均降幅20%,阿里云百科分享阿里云2024年降价信息汇总表
|
9月前
|
JavaScript 前端开发 测试技术
"0元搞定!手把手教你建网站,简单得就像泡桶方便面一样,上线个人网站轻而易举!"
没有服务器和公网IP,想要其他人访问自己做好的网站,该怎么办?今天教大家使用这款简单免费的内网穿透小工具——ngrok,有了它轻松让别人访问你的项目~
|
9月前
|
设计模式 架构师 算法
为面阿里P8,我肝了一份651个技术分支的脑图,要么?(限时领)
这半年,很多人选择安稳,我偏偏不。。 哥们我就想要跳槽,要不干脆去面个【P8 级架构师】吧,也算是摸摸行情,为后面的一些安排提前做好规划~
|
数据采集 机器学习/深度学习 弹性计算
阿里云服务器可以用来做什么?(老司机经验之谈)
2023阿里云服务器可以用来做什么?(老司机经验之谈)使用阿里云服务器可以做什么?阿里云百科分享使用阿里云服务器常用的十大使用场景,说是十大场景实际上用途有很多,阿里云百科分享常见的云服务器使用场景,如本地搭建ChatGPT、个人网站或博客、运维测试、学习Linux、跑Python、小程序服务器等等,云服务器吧分享使用阿里云服务器可以做的几件小事
203 0
|
vr&ar
支付宝集五福来了!一张图看懂官方攻略
通过以下几种方式可获得支付宝福卡:1、2月6日起,通过支付宝AR扫任一福字或扫身边好友“五福到”手势;2、2月8日起,在蚂蚁庄园中收取金蛋;3、2月11日起,参与蚂蚁森林浇水活动(好友或合种的树均可);4、朋友之间可转赠福卡,传递福气。
4649 0
|
数据安全/隐私保护