首页 新闻 会员 周边 捐助

c#如何根据关键词判断给对应的分类ID,而且是多个分类,多个关键词!(附不完整代码)

0
悬赏园豆:20 [已解决问题] 解决于 2015-09-29 16:12
string txt = "我是能源栏目分类,一会我会变成技术分类。怎么进去呢?";
string keys = "能源";
int tag = 0;
string[] arrKey = keys.Split(',');
foreach (string key in arrKey)
{
if (txt.IndexOf(key) >= 0)
{
tag = 35955; //符合keys1变量的关键词就进入栏目1
}
else
{
tag = 0; //都无法匹配,返回默认栏目
}
}

Console.WriteLine(tag);
Console.ReadKey();

上面代码只能根据关键词对应一个栏目,如果是有多个栏目就无法匹配了?各位攻城狮麻烦给看看,如果解决呢?非常感谢啊!

G善源的主页 G善源 | 初学一级 | 园豆:91
提问于:2015-09-29 11:16
< >
分享
最佳答案
0

不明白你的意思,就算有多个关键字,你的tag在同一时间也只能有一个值。再描述一下你的需求吧

收获园豆:20
nicky0227 | 小虾三级 |园豆:1069 | 2015-09-29 11:30

我这个代码只是参考。我的初步设想。如果你有好的方案。可以直接改掉我的代码。或者重写

G善源 | 园豆:91 (初学一级) | 2015-09-29 11:30

@G善源: 不是说你的代码问题而是说你的需求。如果有多个关键词匹配。例如有"能源"和"技术",这个时候你要达到什么效果?同时打开能源和技术的页面?

nicky0227 | 园豆:1069 (小虾三级) | 2015-09-29 11:35

@nicky0227: 是这样的。例如一篇文章我是根据文章的标题有某个关键词,我就把这篇文章自动放到对应的网站分类里面去。网站分类是ID的形式的。例如:一篇文章的标题中有【能源】这个关键词我就给他分到56524这个分类中,标题中含有【技术】这个关键词分到56845这个分类中,标题中含有【游戏】这个关键词分到8964这个分类中……,很多关键词对应网站的多个分类。就是这样!

G善源 | 园豆:91 (初学一级) | 2015-09-29 11:41

@G善源: 假设你网站的分类ID是提前就设定好了的,那么你可以为每个分类声明一个容器。遍历每个标题,再遍历每个容器的关键字。一旦匹配就把当前文章的ID放入对应的容器。

nicky0227 | 园豆:1069 (小虾三级) | 2015-09-29 11:46

@nicky0227: 朋友,你能看看我的代码,或者写一段我测试一下吗?我真写不出来了。不然不会来这里发帖了。希望附代码!

G善源 | 园豆:91 (初学一级) | 2015-09-29 12:23

@G善源: 

Dictionary<int,string> txtDict=new Dictionary<int,string>();
txtDict.Add(1,"我只是能源栏目分类。我的ID是1");
txtDict.Add(2,"我是能源栏目分类,我也是技术分类。我的ID是2");
txtDict.Add(3,"我只是技术分类。我的ID是3");

string keys = "能源,技术";
string[] keyArr = keys.Split(',');
Dictionary<string,string> resultDict=new Dictionary<string,string>();

foreach(int id in txtDict.Keys)
{
   foreach (string key in arrKey)
   {
     if (txtDict[id].IndexOf(key) >= 0)
     {
        if(resultDict.keys.contains(key))
        {
          resultDict[key]+=","+id;
        }
        else
        {
          resultDict.Add(key,id.ToString);
        }
     }
   }
}

代码都是手敲的,可能会有语法或拼写错误。遍历完后resultDict就是根据关键字分类存储的结果了

nicky0227 | 园豆:1069 (小虾三级) | 2015-09-29 14:43

@nicky0227: 

G善源 | 园豆:91 (初学一级) | 2015-09-29 14:51

@nicky0227: 谢谢你的代码,不过我测试看不了效果。能有办法看到效果吗?我是控制台程序,返回栏目ID就正确了!

G善源 | 园豆:91 (初学一级) | 2015-09-29 14:52

@G善源: 很简单的代码。。你调试看看呀。。栏目ID我里面没有涉及

nicky0227 | 园豆:1069 (小虾三级) | 2015-09-29 14:59

@nicky0227: 我是新手。辛苦老师了。栏目ID你就随便设置一值就好。主要是能返回到屏幕显示出来!现在我运行直接出错啊。

G善源 | 园豆:91 (初学一级) | 2015-09-29 15:00

@nicky0227: 你看我最上面的代码就是为了测试弄出来的效果。能做成那样最好。辛苦老师了啊!

G善源 | 园豆:91 (初学一级) | 2015-09-29 15:02
Dictionary<int, string> txtDict = new Dictionary<int, string>();
            txtDict.Add(1, "我只是能源栏目分类。我的ID是1");
            txtDict.Add(2, "我是能源栏目分类,我也是技术分类。我的ID是2");
            txtDict.Add(3, "我只是技术分类。我的ID是3");

            string keys = "能源,技术";
            string[] keyArr = keys.Split(',');
            Dictionary<string, string> resultDict = new Dictionary<string, string>();

            foreach (int id in txtDict.Keys)
            {
                foreach (string key in keyArr)
                {
                    if (txtDict[id].IndexOf(key) >= 0)
                    {
                        if (resultDict.Keys.Contains(key))
                        {
                            resultDict[key] += "," + id;
                        }
                        else
                        {
                            resultDict.Add(key, id.ToString());
                        }
                    }
                }
            }
            foreach (string txt in txtDict.Values)
            {
                Console.WriteLine(txt);
            }
            foreach (string key in resultDict.Keys)
            {
                Console.WriteLine(key + "栏目所对应的消息ID是:" + resultDict[key]);
            }
            Console.ReadLine();
        }

 

nicky0227 | 园豆:1069 (小虾三级) | 2015-09-29 15:15

@nicky0227: 现在代码也不是按关键词分类的啊。我看输出是3个栏目ID都输出了。string keys = "能源";假如这里是能源关键词,输入的话,应该是输入:我是能源栏目分类,我也是技术分类。我的ID是2,这句才对呢!

G善源 | 园豆:91 (初学一级) | 2015-09-29 16:03

@G善源: 少年,多看看代码,读懂它。我只能帮到这里了。

nicky0227 | 园豆:1069 (小虾三级) | 2015-09-29 16:06

@nicky0227: 老师可有qq,我加你。可能跟容易说明需求!

G善源 | 园豆:91 (初学一级) | 2015-09-29 16:06

@nicky0227: 有点开始懂了!

G善源 | 园豆:91 (初学一级) | 2015-09-29 16:09

@nicky0227: 老师,果然厉害。看明白了。!!!!!!!帅!!

G善源 | 园豆:91 (初学一级) | 2015-09-29 16:12

@nicky0227: 老师,我完善了我的需求。在代码的基础上。你现在看看!

G善源 | 园豆:91 (初学一级) | 2015-09-29 16:34

@nicky0227: 

Dictionary<int, string> txtDict = new Dictionary<int, string>();
            txtDict.Add(1, "能源类");
            txtDict.Add(2, "技术类");
            txtDict.Add(3, "投资类");
            txtDict.Add(4, "游戏类");
            txtDict.Add(5, "产业类");
            txtDict.Add(6, "军事类");
            txtDict.Add(7, "社会类");
            txtDict.Add(8, "科技类");
            txtDict.Add(9, "电影类");

            string keys1 = "能源,风电,神华集团,煤炭,风力发电,页岩气";
            string keys2 = "技术,创新,最新技术,研发,科研";
            string keys3 = "投资,";
            string keys4 = "游戏,olo,泡泡堂,魔兽世界,星际争霸,魔兽争霸,dota,DOTA";
            string keys5 = "产业,项目报告,投资报告,产业研究,可行性研究,可研";
            string keys6 = "军事,武力,普京,国防部";
            string keys7 = "社会,郭美美,男子杀,杀死女友,外围女,卖淫,模特,女子";
            string keys8 = "科技,苹果处理器,三星,微软,iPhone6s,手机,滴滴打车";
            string keys9 = "电影,港囧,豆瓣,第三种爱情,逆转胜,魔镜,墓穴迷城,功夫,煎饼侠,十二公民,碟中谍5";


            string[] keyArr = keys1.Split(',');
            Dictionary<string, string> resultDict = new Dictionary<string, string>();

            foreach (int id in txtDict.Keys1)
            {
                foreach (string key in keyArr)
                {
                    if (txtDict[id].IndexOf(key) >= 0)
                    {
                        if (resultDict.Keys1.Contains(key))
                        {
                            resultDict[key] += "," + id;
                        }
                        else
                        {
                            resultDict.Add(key, id.ToString());
                        }
                    }
                }
            }

            foreach (string key in resultDict.Keys1)
            {
                Console.WriteLine(resultDict[key]);
            }
            Console.ReadLine();
        }
G善源 | 园豆:91 (初学一级) | 2015-09-29 16:35

@nicky0227: 应该说,我回显只会回显一个分类的ID,而不是所有分类的ID的。

G善源 | 园豆:91 (初学一级) | 2015-09-29 16:36

@nicky0227: 回显那个分类的ID,取决于当前这条新闻的中所包含的关键词。当然有个前提是,关键词不会重复,就是1分类有的关键词不会在2分类也有。是唯一性的。所以返回来无论怎样都应该是一个栏目ID的!

G善源 | 园豆:91 (初学一级) | 2015-09-29 16:38
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册