0

私が運営している Web サイトには、ユーザーが重複したコンテンツを投稿するという問題があります。その結果、訪問者がコンテンツを検索すると、まったく同じ結果のように見えるものが返されます。

問題は、重複したコンテンツがカーボン コピーではないことです。あちこちで単語が変更されているか、数日後に投稿される可能性がありますが、基本的に再投稿であるため、追加の結果は必要ありません。

例は次のとおりです。

タイトル: ズボンの販売説明: ズボンを販売しています。それらには穴があります。1234 でロブに連絡する

タイトル: ズボンの販売説明: ズボンを販売しています。それらにはいくつかの穴があります。ロブに連絡する

タイトル: My Trousers for sale 説明: ズボンを販売しています。それらには穴があります。1234 でロブに連絡する

これらの重複をまともな精度で釣り上げることができる何らかの形式のアルゴリズム (できれば PHP に組み込まれており、高速) はありますか? それぞれ最大 500 文字のテキストを含む、約 50 項目の結果セットを検索します。

編集:同様の結果が隣り合っていない可能性があることも付け加えておく必要があるため、現在の結果を前の結果と単純に比較することはできません。理想的な世界では、SELECT title, desc FROM database WHERE id IN (10,40,54,143,444) AND UNIQUE(title,desc) > 90% のようなものになります。

4

3 に答える 3

0

了解しましたが、同様の結果を表示したくありませんか?

similar_textを使用できます

例:

$ArrayResults = array();
$found = 0;
$accepted_percentage = 70;

while( /*[ $fetch = ... ]*/ )
{
    $title = $fetch['title'];
    if( count( $ArrayResults ) )
    {
      foreach( array_unique( $ArrayResults ) as $result )
      {
        similar_text( $result, $title, $percent );
        if( $percent >= $accepted_percentage )
        {
          $found = 1;
        }
      }
    }
    if( $found )
    {   
      $found = 0;
      continue;
    }
    $ArrayResults[ $title ] = $title;
}
于 2013-06-20T20:15:39.713 に答える