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