Hello everyone, today I’m releasing v1.2 of both the AskSteem API and AskSteem Web UI which consists of many backend improvements to the AskSteem Core.
What is AskSteem?
AskSteem is the steem search engine, you can find more info about it here.
API Updates
Adjustable Ranking Weights
There are two new parameters available for the AskSteem Search API which are quality_weight
and relevancy_weight
. These new parameters allow API users to customize the AskSteem ranking algorithm to better suit their needs.
To understand what these new options do I will briefly summarize how our ranking algorithm works. When users search on AskSteem we try to find the results that are most relevant but still high quality. To do this we utilize many different ranking factors that fall into two categories: quality or relevancy. By default we give each of these categories a weight of 1, however, with these new API options, you can choose to weigh one higher than the other. For example, if you wanted to ensure the highest quality results make it to the top you could set relevancy_weight=1&quality_weight=3
, or if you wanted more relevant results you could set relevancy_weight=3&quality_weight=1
.
While most use cases will not require you to change these values we are making them available for special cases. Additionally, please note that relying too heavily on relevancy will make your search results susceptible to keyword stuffing.
Related Posts API
There is also a new API endpoint available that allows developers to easily find posts related to an existing post by providing its author and permlink.
https://api.asksteem.com/related?author=thekyle&permlink=introducing-asksteem-a-steem-search-engine
It also works for users
https://api.asksteem.com/related?user=thekyle
Blockchain Crawler Updates
In an update to AskSteem Core (the core technology that is utilized by all AskSteem services), we have updated our blockchain crawler. This is the software that syncs our search index with that actual data on the blockchain.
The previous version of the AskSteem crawler worked by periodically scanning old posts to check if the content had changed in any way such as new upvotes or comments. While this worked well when AskSteem was launched the blockchain has grown significantly and this is no longer a viable strategy.
The new version of the AskSteem crawler uses a technique called block linking. Where it scans the head block for activities that link back to previous blocks in the blockchain in order to update the data, such as posts, created in those previous blocks. This is a much more efficient method for keeping our index in sync with the blockchain and will result in more accurate information in search results. We are also working on applying this crawling technique to our user crawler.
Introducing AuthorRank
AuthorRank is a blockchain implementation of Google’s PageRank algorithm. Currently, we are testing it only on user search results but in the future, we will likely use this as a quality factor in post rankings too.
Right now, AuthorRank works by counting each follower of any steem user as a vote recommending that user. However, not all followers are given the same voting weight. Although our actual algorithm differs a good way to estimate the AuthorRank voting power of any given follower is to divide their user reputation by the number of accounts they are following. This means that followers with low reputations or who are following lots of accounts will have a smaller individual vote compared to accounts with high reputation or who are following few accounts.
AskSteem Web UI Updates
Over the past few days, I have completely rewritten the AskSteem Web UI from the ground up. Originally when AskSteem launched there was no API available so the Web UI needed to house all of the components required to run AskSteem Search including the ranking algorithm, logic, formatting, suggestions, etc.
Later I decided to fork large portions of the AskSteem Web UI codebase to create the AskSteem Search API, however, this meant I had a lot of duplicate code between the two services. I’ve had plans to migrate the AskSteem Web UI to using the AskSteem Search API for a few months but needed the API to reach feature parody before that could be done. In the AskSteem Search API v1.1 feature parody was achieved between the two services and I began purging the AskSteem Web UI’s codebase of duplicate code and replacing it with calls to the AskSteem Search API. In AskSteem Web UI v1.2 there is none of the original code used for searching and everything gets passed to the AskSteem API.
Version Codenames
I've also decided to make referencing AskSteem versions easier I will be adding a codename for each major version release which will be a type of fish. For this release, the codename is "Angelfish".