PHP和RSS-创建';得分';基于描述

PHP和RSS-创建';得分';基于描述,php,parsing,rss,Php,Parsing,Rss,希望这是有道理的。我有一个php脚本magpierss,它解析RSS提要并将数据插入MySql,效果很好。我将RSS项目的各个部分放入变量中,以使它们更易于使用,因此获取RSS提要片段不是问题 然而,我的目标是能够让它过滤故事,只导入某些故事。我希望尽可能地自动化这一过程,并考虑到一些误报/漏报,因为它们将在之后手动验证 我想做的是为每个单词设置一个关键字列表和“权重”。因此,当解析一个新的RSS项目时,脚本将根据描述字段中单词的权重创建一个“分数” 例如: stackoverflow = 10

希望这是有道理的。我有一个php脚本magpierss,它解析RSS提要并将数据插入MySql,效果很好。我将RSS项目的各个部分放入变量中,以使它们更易于使用,因此获取RSS提要片段不是问题

然而,我的目标是能够让它过滤故事,只导入某些故事。我希望尽可能地自动化这一过程,并考虑到一些误报/漏报,因为它们将在之后手动验证

我想做的是为每个单词设置一个关键字列表和“权重”。因此,当解析一个新的RSS项目时,脚本将根据描述字段中单词的权重创建一个“分数”

例如:

stackoverflow = 10
very = 7
helpful = 8
所以“stackoverflow非常有用”得25分

而且“stackoverflow总是非常有用”仍然会得到25分,因为“is”和“always”不是分配了权重的关键字

“这里有些随机的东西”会得到0分,因为没有关键词

然后我可以使用关键字权重和分数来找出过滤rss提要的最佳设置


大部分我都能弄明白。我只需要知道一种解析项目描述的方法,并为指定的关键字分配权重以创建“分数”。

PHP附带了一些有用的函数,如strps()和preg_match。前者将搜索特定字符串,preg_match将搜索正则表达式。您应该创建一个关键字及其权重的数组,然后遍历每个关键字并检查描述是否包含该值。如果是,则增加一个重量计数器。下面是一个简单的例子:

$keywords = array(
   'stackoverflow' => 10,
   'very' => 7,
   'helpful' => 8
);
$description = $feed->getDescription(); // or wherever
$total_weight = 0;
foreach ($keywords as $keyword => $weight) {
  if (strpos($keyword, $description))
      $total_weight += $weight;
}
return $total_weight; // total weight of this item
反正是这样的。还有其他方法可以做到这一点,但这应该让你开始


祝你好运

做这个:这看起来像我想做的。我很快就能试用它,会让你知道它是如何运行的。我认为这是一个很好的简单的例子。但是,您可以使用这里描述的MySQL自然全文搜索()实现一些功能。但是,在这种情况下,您不能自己分配权重。但是评分本身比仅仅检查某个单词是否存在要好一点。我过去用过全文搜索。这对于像这样的基本事情非常有用。不过,我倾向于自己写,因为我的搜索比简单地根据关键字加权要复杂得多。但是,是的,打得不错,贾斯莫。我过去也使用过MySql全文搜索。但是,我正在解析RSS提要,然后将其放入数据库。因此,我需要在将其放入数据库之前获得某种权重/分数,这样MySql搜索就不会有帮助了。我确实使用了这段代码,并做了一些小的修改,它是有效的,谢谢。第9行和第11行的foreach语句的结尾缺少了a)和a}。啊,接得好。当代码位于这个小文本框而不是我的编辑器中时,很难再次检查代码。:)很高兴这有帮助。