Over the past month, I've been building a new search engine that indexes the steem blockchain. It's currently live at asksteem.com. The goal of AskSteem is to provide a reliable, powerful, and fast search engine that is optimized for steem. In this post, I'd like to cover some of the features that are available.
There are many different ways that you can query the AskSteem index. I've created a video demonstrating each of them, but you may also read their descriptions and examples below.
Like many other search engines, you can search for general phrases and terms. AskSteem will try its best to find the document that is most relevant to your query based on our ranking algorithm.
Tip: Click the example to go to that query on AskSteem
How to buy bitcoin
What is steem
Putting a query into quotes requests that AskSteem only returns documents that have exactly that phrase in that order.
"How to buy bitcoin"
"What is steem"
AskSteem allows you to filter posts by tag.
You can filter posts by the author too.
Creation Date Search
AskSteem provides a highly flexible and powerful date search tool for posts. You can search by exact date or by date range. Dates must be in the form of YYYY-MM-DD.
Search for all posts posted on June 2, 2017
Search for all posts posted between May 1, 2017, and May 31, 2017
created:[2017-05-01 TO 2017-05-31]
Search by Number of Votes/Comments
Similar to dates AskSteem has another set of robust tools that allow searches based on the number of upvotes or comments a post receives.
Posts with 150 votes:
Posts with between 100 and 150 votes
net_votes:[100 TO 150]
Posts with 50 comments:
Posts with between 40 and 50 comments:
children:[40 TO 50]
Posts with more than 50 comments:
or less than 50:
this also works with votes, less than or equal to 10 votes:
Searches with Boosts
You can prioritize certain parts of your query with boosts. These are indicated by placing a
^n at the end of a term, where
n is the power you want to boost that part of the query to.
Give the term bitcoin a boost of two:
I really want posts to have the term bitcoin^2 in them.
Give the term mine a boost of two, and term steem a boost of three:
How to mine^2 steem^3
You can indicate whether you want documents to contain certain terms by placing a
+ or a
- in front of the term.
Find documents about mining but not bitcoin:
cryptocurrency +mining -bitcoin
You can use the wildcard expressions of
? for a single character, or
* to match any number of characters.
How to mine any cryptocurrency:
How to mine *
AskSteem supports any combination of the previously mentioned search types in a single powerful query. This uses boolean values of AND, OR, and NOT, along with parenthesis to separate statements.
Example Queries: Posts tagged with asksteem by @thekyle:
tags:asksteem AND author:thekyle
Posts with between 50 and 100 comments that have more than 500 upvotes and that are tagged with 'bitcoin' or have the term bitcoin in the document:
(bitcoin OR tags:bitcoin) AND (net_votes:>500 AND children:(>50 AND <100))
Posts created on June 2, 2017, with 100 or more upvotes but less than 10 comments:
created:2017-06-02 AND net_votes:>=100 AND children:<10
https://www.youtube.com/watch?v=aiqasuhUPXU Because AskSteem integrates directly into the steem blockchain it can read metadata directly from posts and use that data when performing queries and displaying results. We encourage developers to add AskSteem compatible metadata to their posts so that we can show links to your application in our search results. The full documentation can be found at asksteem.com/developers, however, in this post I will summarize the most important tags.
|domain||The domain name or web address that your application is hosted on.|
|locator||The path to reach the post on the domain relative to the root.|
|protocol||Either 'http' or 'https' if not provided then http will be used by default|
If none of the above metadata is provided then AskSteem will link to steemit.com for all posts by default, however, it is assumed that the platform creating the content will have the best interface for viewing it, so we would rather link there.
locator tags are required for custom linking to work, however, the
protocol tag is optional and will default to http.
- The domain tag should be the domain name that your web-based steem application is hosted on and is subdomain sensitive (so if your hosting on www subdomain then put that).
- The locator should be the permalink to that particular post in your applications URL structure, also notice the leading forward slash, this is required.
The final URL that we point to will be generated by concatenating the domain and locator together with the protocol at the beginning which will be http unless otherwise specified.
Additionally, if you are building an application on the steem blockchain and need a search API please email us at firstname.lastname@example.org, we are able to query custom metadata and make various other customizations to the ranking algorithm to support your use case.
The harsh reality is that search engines are expensive to run and that adding new features and improving performance are difficult if the basic funding needs of the project are not covered. AskSteem currently costs me about $100/month to run, and that number will, of course, continue to increase as steem grows and the index size increases.
Ideally, my goal is the have those costs covered through upvotes from the steem community and to use any extra money for adding new features and scaling the search infrastructure to meet demand. If this works then AskSteem will be the first search engine in the world to use a cryptocurrency based revenue model, instead of selling advertising.
Thank you for your time, and happy searching!