C#-防止重复检索帖子

本文关键字:检索 C#- | 更新日期: 2023-09-27 18:23:36

我是个新手,正在尝试创建一个C#程序,使用FB API从Facebook检索帖子。

我有一个单词计数功能,可以对照否定单词词典进行检查。这意味着它将显示否定词及其出现频率。

我现在面临的问题是,我想显示包含这些负面词汇的帖子。然而,如果否定词在帖子中出现3次,则该帖子将出现3次。我该如何解决这个问题?

Below is my code:
(For designer)
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.IO;
    namespace empTRUST
    {
        public partial class PostAnalysis : Form
        {
            DBStatusDL ad;
            string target_fbid;
            public PostAnalysis(string target_fbid)
            {
                InitializeComponent();
                this.target_fbid = target_fbid;
                ad = new DBStatusDL();
            }
            private void button_Displayposts_Click(object sender, EventArgs e)
            {
                int i = 1;
                var dir = new DirectoryInfo(Application.StartupPath + "''Dictionary"); //Load the dictionary from debug folder
                var ed = new matchingWordsWithPosts();
                var rows = ad.LoadStatus(target_fbid); //Call the load status function based on fb_id
                foreach (FileInfo file in dir.GetFiles()) //For loop, to loop through files
                {
                    var dict = File.ReadAllLines(dir.FullName + "''" + file);
                    foreach (var row in rows)
                    {
                        List<DataRow> words = ed.countWordsInStatus(row, dict); // Retrieves word dictionary returned from function
                        foreach (var word in words)
                        {
                            var item = new ListViewItem(new[] { i.ToString() ,word["Status_message"].ToString(), word["Status_time"].ToString() });
                            listViewPosts.Items.Add(item);
                            i++;
                        }
                    }
                }
            }
            private void button_Back_Click(object sender, EventArgs e)
            {
                this.Close();
                var abc = new AnalysisPage(target_fbid);
                abc.Show();
            }
        }
    }
(For class)
    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;
    using System.Text.RegularExpressions;
    using System.Data;
    namespace empTRUST
    {
        class matchingWordsWithPosts
        {
            public List<DataRow> countWordsInStatus(DataRow status, string[] dictArray)
            {
                List<DataRow> statusList = new List<DataRow>();
                var words = new Dictionary<string, int>(StringComparer.CurrentCultureIgnoreCase); // local word dictionary is created here
                foreach (var dictEntry in dictArray)
                {
                    var wordPattern = new Regex(@"'w+");
                    string smallDictEntry = dictEntry.ToLower();
                    foreach (Match match in wordPattern.Matches(status["Status_message"].ToString()))
                    {
                        if (match.ToString() == smallDictEntry)
                        {
                            statusList.Add(status);
                        }
                    }
                }
                return statusList;   // returns local word dictionary to receiving end
            }
        }
    }

C#-防止重复检索帖子

因为您没有提供countWordsInStatus()函数,所以我不知道这是否是问题所在。然而,看起来的问题是,即使该函数已经匹配了一个这样的单词,它也会继续遍历帖子。要解决此问题,您可以在将帖子添加到返回的列表中后,放置continue;(或者可能是break;,具体取决于您使用的代码)。这将使循环跳到下一篇文章,并确保它不会继续计算文章中已经匹配的单词。

如果你发布了这个函数,应该会更容易理解这个问题。

匹配单词并处理post后,退出循环。