We do have influence over this, using a feature the Google bot listens to: HTML5 microdata. It's a set of attributes you can add to HTML5 elements to guide machines in better understanding the content of a page.
I say the Google bot listens to microdata with certainty: Google itself recommends using microdata for interacting with their search engine. They are also one of the collaborators who made the current standard vocabulary for microdata - schema.org - according to their schema.org FAQ.
Schema.org contains a Question schema and an Answer schema (there's also the full schema list if you want to browse). We can take advantage of the acceptedAnswer property to guide Google to provide the right answer in its searches: we'll mark the accepted answer as the one that's, well, accepted, or if none is, the one that has the most votes.
Stack Exchange's development team is already using microdata, as can be seen by examining this question itself:
They currently define questions as Articles, so let's define them as Questions instead. It might look like the below. I'll ignore most of the HTML which Stack Exchange uses, including the votes and stuff, in favour of just getting the idea across.
<!-- Define the entire page as a QA page -->
<body itemscope itemtype="http://schema.org/QAPage">
<!-- Wrapping the entire question, and all answers... -->
<div itemscope itemtype="http://schema.org/Question">
<!-- This is the element containing all the stuff specific to our question. -->
<h1 itemprop="name">Is HTML a programming language?</h1>
<div itemprop="text">So I was wondering...</div>
<!-- Further down, all the answers begin. -->
<h2><span itemprop="answerCount">4</span> answers</h2>
<div itemprop="acceptedAnswer" itemscope itemtype="http://schema.org/Answer">
<div itemprop="text">No it isn't</div>
<div itemscope itemtype="http://schema.org/Answer">
<div itemprop="text">(a different answer)</div>
</div> <!-- End answers list -->
</div> <!-- End question -->
The following attributes (helpfully syntax-highlighted) are the microdata ones:
- itemscope, which says "this element defines one whole item"
- itemtype, which says "this the kind of thing I am defining"
- itemprop, which defines the various properties of that thing.
Note that in microdata, all properties are optional to define, so we just define as much as is relevant or as much as we want.
An aside about vote counts
We could possibly also provide the vote count for the question and answers, which may mean not having to say an accepted answer is accepted. There's a complication, though: the Question and Answer schemas don't have a simple voteCount or score property. Instead, they have separate upvoteCount and downvoteCount properties.
So we have a couple of options:
- Report the question's score via the upvoteCount attribute. This appears to be the behaviour used by their microdata examples on the Question and Answer schemas.
- On June 11th, I noticed the microdata examples on the Question and Answer schemas used a voteCount property not listed in the properties tables for those schemas. I requested clarification on whether it existed. As of June 17th (possibly sooner), they updated their microdata examples to remove mention of a voteCount property and just used the upvoteCount property.
- Use the
aggregateRating.ratingValue property of the Question/Answer schema, as Martijn Pieters points out in comments.
- Reveal the upvote/downvote count. According to words that end in GRY this may be publicly available information anyway, via the API.
feedbacklink there, perhaps that's a good port of call?