Introducing the AskSteem Search Engine

Published on Jun 9th, 2017 by Kyle Piira

Asksteem 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.

Query Syntax

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.

Keyword/Phrase Search

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. Example Queries: Tip: Click the example to go to that query on AskSteem How to buy bitcoin What is steem Markdown tutorial

Exact Search

Putting a query into quotes requests that AskSteem only returns documents that have exactly that phrase in that order. Example Queries: "How to buy bitcoin" "What is steem" "Markdown tutorial"

Tag Search

AskSteem allows you to filter posts by tag. Example Queries: tags:life tags:steemit

Author Search

You can filter posts by the author too. Example Queries: author:thekyle author:abit author:steemit

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. Example Queries: Search for all posts posted on June 2, 2017 created:2017-06-02 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. Example Queries: Posts with 150 votes: net_votes:150 Posts with between 100 and 150 votes net_votes:[100 TO 150] Posts with 50 comments: children:50 Posts with between 40 and 50 comments: children:[40 TO 50] Posts with more than 50 comments: children:>50 or less than 50: children:<50 this also works with votes, less than or equal to 10 votes: net_votes:<=10

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. Example Queries: 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

Inclusive/Exclusive Search

You can indicate whether you want documents to contain certain terms by placing a + or a - in front of the term. Example Queries: Find documents about mining but not bitcoin: cryptocurrency +mining -bitcoin

Wildcard Search

You can use the wildcard expressions of ? for a single character, or * to match any number of characters. Example Queries: How to mine any cryptocurrency: How to mine *

Boolean Search

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

Developers

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.

TagDescriptionExample
domainThe domain name or web address that your application is hosted on.example.com
locatorThe path to reach the post on the domain relative to the root./CATEGORY/@AUTHOR/PERMLINK
protocolEither 'http' or 'https' if not provided then http will be used by defaulthttps

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.

The domain and locator tags are required for custom linking to work, however, the protocol tag is optional and will default to http.

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 contact@asksteem.com, we are able to query custom metadata and make various other customizations to the ranking algorithm to support your use case.

Funding

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!