少なくとも1つの画像を含む回答を投票で並べ替えるにはどうすればよいですか?

Aug 18 2020

私はいつもMathSEの[視覚化]タグと、説明しやすい視覚的に素晴らしい数学の概念のような投稿が大好きでした。一部の人々は視覚的に最もよく学びます。Math EducatorsやChemistryのような他のSEにはこのタグがありませんが、どちらも画像を使用していることは間違いありません。

  1. では、少なくとも1つの画像を含む、投票順に並べられた回答のリストを表示するにはどうすればよいですか?

  2. 2番目の基準でソートすることは可能ですか:その回答のテキストの数?次に、少なくとも1つの画像を含む投稿のうち、付随するテキストが最も少なく、最も多いことがわかります。

回答

1 rene Aug 19 2020 at 01:55

これが別のSEDEクエリです。

私は少し異なるアプローチを取ります。(Posts.bodyフィールドにある)htmlを検索する代わりに、実際のマークダウンをソースとして使用します。PostHistoryテーブルには、最新のものだけでなく、投稿のすべてのリビジョンが含まれているため、これはより複雑になります(パフォーマンスが低下します)。だから私は最後のリビジョンを見つけるためにジャグリングをします。そのテキストでは、Glorfindelが使用したのと同じ手法を使用しています。Likeステートメントですが、![ ][ ]マークダウンを探します。テキストの長さの代わりに、単語数の概算を追加しました。

SEDEを幸せに保つために、私はTOP1000を行います。

select top 1000
       a.id as [Post Link]
     , a.creationdate
     , a.score
     , len(text)-len(replace(text,' ','')) [~ word count]
from posts a
inner join posts q on q.id = a.parentid
inner join (
select postid, 
       text
from posthistory phi
where id = (select max(id) 
            from posthistory ph
            where ph.postid = phi.postid
            and ph.posthistorytypeid in (2,5,8))
) md on md.postid = a.id
where a.posttypeid = 2 -- answers
and (
  md.text like '%![[]%][[]%]%' 
  --or 
  --md.text like '%![%](%)%' or 
  --md.text like '%<img src="%"%'
  )
order by 4 desc

結果は次のようになります。

SEDEは週に1回日曜日に更新されることに注意してください。
細かい使用SEDEチュートリアル立派によって書かれたモニカチェッリオを。SEDEチャット
で「こんにちは」と言ってください。

5 Tinkeringbell Aug 18 2020 at 15:57

SEDEを使用すると、2番目の基準(投稿の長さで並べ替え)が可能になるため、おそらく最良の結果が得られます。

ただし、最初の部分では、検索を使用できます[visualization] url:"*.jpg*" is:a。画像を含む視覚化タグ内の回答を見つけて、結果を投票で並べ替えます。

マーティンがあなたの質問の下のコメントで言ったように、できるだけ多くの答えを見つけるために、imgur、png、jpg、gifを含む複数のURLを検索したいかもしれません。

5 Glorfindel Aug 18 2020 at 16:19

これは、少なくとも1つの画像を含むすべての回答を一覧表示するSEDEクエリです。回答に含まれるテキストの量を把握するのは(少なくとも私にとっては)難しいので、回答の全長を決めました。これは良い指標になるはずです。

SEDEは、週に1回、日曜日の朝にのみ更新され、現在、いくつかの可用性の問題があることに注意してください。また、このように投稿テーブル全体を検索しても、数学のような大規模なサイトではおそらく機能しません。それは化学と数学の教育者のために働きます。たとえば、検索を特定のタグ、最小スコア、または投稿日に制限するために、クエリをフォークする必要がある場合があります。SEDEまたはSQL全般に慣れていない場合は、すばらしいチュートリアルを確認してください。