`
cloudgamer
  • 浏览: 59481 次
  • 性别: Icon_minigender_1
  • 来自: 顺德
社区版块
存档分类
最新评论

我来做百科(第二十天) 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系统就基本完成了。
分享到:
评论

相关推荐

    电脑百科全书-----217个电脑知识和实用问题解决集锦

    (1#)代表第一层楼,以下类推 &lt;br&gt;2000XP双系统启动问题 (1#) ADSL拨号中出现的错误代码(2#) &lt;br&gt;at命令的用法(3#) &lt;br&gt;AWARD BIOS设置详解 (上)(4#) &lt;br&gt;AWARD BIOS设置详解( 下)...

    第五代移动通信(5G)简介.pptx

    第五代移动通信(5G)简介 1433325 崔含泽 第四组 第五代移动通信(5G)简介全文共13页,当前为第1页。 参考文献 J.G. Andrews ,S.Buzzi ,Wan Choi ,S.V.Hanly ,A. Lozano , A.C.K. Soong ,J.C. Zhang ,"What Will 5G ...

    自己动手写操作系统(含源代码).part2

    我想,虽然第二版有着这样那样的变化,但有一点没有变,那就是本书试图将我在编写自己操作系统的过程中的经验尽可能地告诉读者,同时尽可能将我当初的思路和编码过程呈现出来。很可能读者比我更聪明,有更好的解决...

    自己动手写操作系统(含源代码).part1

    我想,虽然第二版有着这样那样的变化,但有一点没有变,那就是本书试图将我在编写自己操作系统的过程中的经验尽可能地告诉读者,同时尽可能将我当初的思路和编码过程呈现出来。很可能读者比我更聪明,有更好的解决...

    推荐的C++书籍 4.3 Generic programming and the STL

    从发展的速度来看,我可能永远不会写有关template的技术书籍。幸运的是一些人比我勇敢,Andrei就是这样一位先锋。我想你会从此书得到很多收获。我自己就得到了很多——Scott Meyers September2000。 并且,Scott ...

    推荐的C++书籍 4.4 STL源码剖析

    从发展的速度来看,我可能永远不会写有关template的技术书籍。幸运的是一些人比我勇敢,Andrei就是这样一位先锋。我想你会从此书得到很多收获。我自己就得到了很多——Scott Meyers September2000。 并且,Scott ...

    -C++参考大全(第四版) (2010 年度畅销榜

    第20章 C++输入/输出系统基础 20.1 老的C++I/O与现代的C++I/O 20.2 C++的流 20.3 C++的流类 20.4格式化的I/O 20.5 重载 第21章 C++文件的输入/输出 21.1 和文件类 21.2 打开和关闭文件 21.3 读写文本文件 21.4 无...

    最新笔试面试常用算法收集打包

    2009/09/27 15:06 19,287,552 计算机程序设计艺术(第三版,中文版,,第二卷:半数值算法,Donald+E.Knuth+著).pdf 2009/09/27 15:08 100,352 计算机网络.doc 2009/10/05 09:45 584,607 部分IT公司笔试算法题(转...

    sat-solver:小 SAT 求解器

    尝试找到一种方法来解决所有可能的解决方案,知道我们只会得到第一个 CNF / 基准 介绍 ( ) 进一步阅读 维基百科 http://en.wikipedia.org/wiki/Boolean_satisfiability_problem ...

    浅析GIS大数据.doc

    GIS数 据量大的第二层含义是指数据单位个数多。比如"天地图"各类地名和POI(Point of Interest,兴趣点)有1100多万条, 2011年8月竣工的国家西部1 50000地形图空白区测图工程和国家1 50000基础地理信息数 据库更新...

    PLSQLDeveloper下载

    2) 循环结构 这一结构与其他语言不太一样,在PL/SQL程序中有三种循环结构: a. loop … end loop; b. while condition loop … end loop; c. for variable in low_bound . . upper_bound loop … end loop; 其中的...

    大学文献检索资料 DOC

    第二节 信息检索的目的和作用 1.通过科技文献检索能够打开人类知识宝库的钥匙。 2.通过科技文献检索能使科技工作者及时把握科技发展的动态和趋势。 3.通过科技文献检索能有助于开拓知识面,改善知识结构。 4....

    国微CMS 政府网站系统(部门版)

    II、百科(互动):支持整合国内著名的百科模块系统互动百科。 III、站群系统:实现站点间数据相互推送、主站管理分站的模式。 国微CMS学校方案2017年09月05日升级包: 1、修正了信息公开字段的问题。让信息公开...

    嵌入式Linux入门笔记(十年程序员精品推荐、让你看得懂的笔记、结合开发板例程精心讲解)

    第二阶段在开发板上学习研究Linux. 一.MIZI Linux SDK for S3C2410开发环境及工具使用. 1.构造软件开发环境. 2.编译嵌入式Linux生成image…… 3.将嵌入式Linux的image下载到目标板… … 4. 嵌入式平台测试…… 一...

    精易模块[源码] V5.15

    7、修正“文件_下载”不能下载的BUG,感谢易友【@新手来学易】反馈。 8、删除“文本_到小写m”删除该汇编命令,出现不兼容。 9、修正“系统_取MAC地址”未初始化COM不支持线程的BUG,感谢易友【@ds9660】反馈。 10、...

Global site tag (gtag.js) - Google Analytics