<?xml version="1.0" encoding="utf-8"?>
<feed xmlns="http://www.w3.org/2005/Atom">
  <title type="text">Read the Docs Blog - Posts tagged gsoc</title>
  <id>https://blog.readthedocs.com/archive/tag/gsoc/atom.xml</id>
  <updated>2019-08-14T00:00:00Z</updated>
  <link href="https://blog.readthedocs.com" />
  <link href="https://blog.readthedocs.com/archive/tag/gsoc/atom.xml" rel="self" />
  <generator uri="http://ablog.readthedocs.org" version="0.9.5">ABlog</generator>
  <entry xml:base="https://blog.readthedocs.com/archive/tag/gsoc/atom.xml">
    <title type="text">GSOC 2019: Autobuild Documentation for Pull Requests</title>
    <id>https://blog.readthedocs.com/building-docs-for-pull-requests/</id>
    <updated>2019-08-14T00:00:00Z</updated>
    <published>2019-08-14T00:00:00Z</published>
    <link href="https://blog.readthedocs.com/building-docs-for-pull-requests/" />
    <author>
      <name>Maksudul Haque</name>
    </author>
    <content type="html">&lt;div class=&quot;section&quot; id=&quot;gsoc-2019-autobuild-documentation-for-pull-requests&quot;&gt;

&lt;p&gt;Building documentation for pull requests is one of the most requested features of Read the Docs.
Similar to how a continuous integration system runs a test suite on every pull request,
this change would build the documentation for each pull request
and send build status notification to the providers’ Status API (e.g. Github Status API).
This will let users check if the documentation build passed
and also how the documentation looks before merging it to master.&lt;/p&gt;
&lt;p&gt;As a student of Google Summer of Code (GSoC) 2019, I (&lt;a class=&quot;reference external&quot; href=&quot;https://github.com/saadmk11&quot;&gt;Maksudul Haque&lt;/a&gt;) was tasked with building this feature.
The main goal of my project was to make it possible to build documentation whenever a pull request was created,
and send build status notification to the Providers’ Status API.&lt;/p&gt;
&lt;p&gt;To see this feature in action you can click on one of the &lt;a class=&quot;reference external&quot; href=&quot;https://github.com/readthedocs/readthedocs.org/pulls&quot;&gt;pull requests&lt;/a&gt; on readthedocs.org repository.&lt;/p&gt;
&lt;div class=&quot;figure align-default&quot; id=&quot;id1&quot;&gt;
&lt;img alt=&quot;GitHub Build Status Reporting for Pull Requests.&quot; src=&quot;../../../_images/github-build-status-reporting.gif&quot; style=&quot;width: 70%;&quot; /&gt;
&lt;p class=&quot;caption&quot;&gt;&lt;span class=&quot;caption-text&quot;&gt;GitHub Build Status Reporting for Pull Requests&lt;/span&gt;&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div class=&quot;section&quot; id=&quot;google-summer-of-code&quot;&gt;
&lt;h1&gt;Google Summer of Code&lt;/h1&gt;
&lt;p&gt;Google Summer of Code is a global program where students work with an open source organization
on a 3 month programming project. &lt;strong&gt;Autobuild Documentation for Pull Requests&lt;/strong&gt; was one of the project ideas on
Read the Docs &lt;a class=&quot;reference external&quot; href=&quot;https://github.com/readthedocs/readthedocs.org/blob/3.5.3/docs/gsoc.rst#autobuild-docs-for-pull-requests&quot;&gt;Project Ideas&lt;/a&gt; for Google Summer of Code 2019. I applied for the project and got accepted.&lt;/p&gt;
&lt;p&gt;I started working on this project since May 2019.
All of my work on this project can be seen in the &lt;a class=&quot;reference external&quot; href=&quot;https://github.com/orgs/readthedocs/projects/8&quot;&gt;Pull Request Builder Board&lt;/a&gt;.&lt;/p&gt;
&lt;/div&gt;
&lt;div class=&quot;section&quot; id=&quot;background&quot;&gt;
&lt;h1&gt;Background&lt;/h1&gt;
&lt;p&gt;Many of our users wanted a way to visualize the documentation update that was made in a pull request.
They also want to know whether the documentation build will pass before merging the pull request to master.
This would allow users to have more confidence on the pull request
and make the pull request less likely to break the documentation after merging.
So, to achieve this Read the Docs &lt;a class=&quot;reference external&quot; href=&quot;https://docs.readthedocs.io/en/latest/team.html#development-team&quot;&gt;core team&lt;/a&gt; selected &lt;strong&gt;Autobuild Documentation for Pull Requests&lt;/strong&gt;
as one of the projects of Google Summer of Code 2019.&lt;/p&gt;
&lt;/div&gt;
&lt;div class=&quot;section&quot; id=&quot;pull-request-builder-features&quot;&gt;
&lt;h1&gt;Pull Request Builder Features&lt;/h1&gt;
&lt;p&gt;Currently I have implemented these features and working on more upcoming features.
Some of the major features are as follows:&lt;/p&gt;
&lt;ul class=&quot;simple&quot;&gt;
&lt;li&gt;&lt;strong&gt;Creating External Versions:&lt;/strong&gt; We create an external version when we receive a pull request
webhook event for a project from GitHub and trigger a build for that version.
External versions are short-lived versions that are separate from the project’s main documentation.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Synchronizing External Versions:&lt;/strong&gt; Whenever there is a new commit on the pull request,
we synchronize the external version for that pull request and trigger a new documentation build with the latest changes.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Deleting External Versions:&lt;/strong&gt; Whenever the pull request is closed or merged,
we delete the external Version associated with that pull request.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Warning Banner for pull request documentation:&lt;/strong&gt; While building documentation for pull requests
we add a warning banner at the top of those documentations to let the users know that
this documentation was generated for pull requests and is not the main documentation for the project.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;We send build status reports to the status API of the provider (e.g. GitHub).
When a build is triggered for a pull request we send build pending notification with the build URL
and after the build has finished we send success notification if the build succeeded without any error
or failure notification if the build failed.
By going to the build URL provided in the status report users can view the build steps
and also see the documentation generated by that build.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Currently, we only support GitHub and planning to extend to GitLab and BitBucket.&lt;/strong&gt;&lt;/p&gt;
&lt;/div&gt;
&lt;div class=&quot;section&quot; id=&quot;getting-started&quot;&gt;
&lt;h1&gt;Getting Started&lt;/h1&gt;
&lt;p&gt;Building documentation for pull requests is currently in Beta testing and only supports Github repositories.
If you want to dive in and enable this feature for your project you can &lt;a class=&quot;reference external&quot; href=&quot;mailto:support&amp;#37;&amp;#52;&amp;#48;readthedocs&amp;#46;org&quot;&gt;email us&lt;/a&gt;
with the URL of your ReadtheDocs project.&lt;/p&gt;
&lt;/div&gt;
&lt;div class=&quot;section&quot; id=&quot;future-improvements&quot;&gt;
&lt;h1&gt;Future Improvements&lt;/h1&gt;
&lt;p&gt;We are planing to extend this feature to other platforms such as GitLab and BitBucket.
We are also planning to make this feature more customizable through our configuration file (&lt;code class=&quot;docutils literal notranslate&quot;&gt;&lt;span class=&quot;pre&quot;&gt;.readthedocs.yaml&lt;/span&gt;&lt;/code&gt;).
If you have any improvements or features in mind for building documentation for Pull requests we would love to know about it.
Please feel free to let us know by submitting an &lt;a class=&quot;reference external&quot; href=&quot;https://github.com/readthedocs/readthedocs.org/issues/new&quot;&gt;issue on GitHub&lt;/a&gt;.&lt;/p&gt;
&lt;/div&gt;
&lt;div class=&quot;section&quot; id=&quot;contributors-wanted&quot;&gt;
&lt;h1&gt;Contributors Wanted&lt;/h1&gt;
&lt;p&gt;As Read the Docs is an open source project backed by a small team of developers,
most of them are busy to keep things up and running only. Therefore, its quite
hard for them to take time to implement new features. We would like to get more contributors
to improve this feature. If you know a bit of Django and Python and interested to improve this feature
you are always welcome to contribute. If you need any support to start contributing, you can get in touch with
me or any other member of  Read the Docs team. You can find all of us at &lt;cite&gt;#readthedocs&lt;/cite&gt; freenode
IRC channel or &lt;a class=&quot;reference external&quot; href=&quot;https://gitter.im/rtfd/readthedocs.org&quot;&gt;readthedocs gitter&lt;/a&gt; channel. I am &lt;cite&gt;saadmk11&lt;/cite&gt; at IRC and &lt;cite&gt;&amp;#64;saadmk11&lt;/cite&gt; at gitter.&lt;/p&gt;
&lt;/div&gt;
&lt;div class=&quot;section&quot; id=&quot;conclusion&quot;&gt;
&lt;h1&gt;Conclusion&lt;/h1&gt;
&lt;p&gt;To conclude, I would like to say this was a much needed feature for Read the Docs and also its users.
This feature will improve our platform and make it a true Continuous Documentation platform.
I think that many users will benefit from this feature.
We will keep making improvements along the way for a better user experience.&lt;/p&gt;
&lt;/div&gt;
</content>
  </entry>
  <entry xml:base="https://blog.readthedocs.com/archive/tag/gsoc/atom.xml">
    <title type="text">GSOC 2019: Improved Search Results and Search As You Type</title>
    <id>https://blog.readthedocs.com/improved-search-and-search-as-you-type/</id>
    <updated>2019-08-13T00:00:00Z</updated>
    <published>2019-08-13T00:00:00Z</published>
    <link href="https://blog.readthedocs.com/improved-search-and-search-as-you-type/" />
    <author>
      <name>Vaibhav Gupta</name>
    </author>
    <content type="html">&lt;div class=&quot;section&quot; id=&quot;gsoc-2019-improved-search-results-and-search-as-you-type&quot;&gt;

&lt;p&gt;Giving users the ability to easily find the information that they
are looking for has always been important for Read the Docs.
This year, I, &lt;a class=&quot;reference external&quot; href=&quot;https://github.com/dojutsu-user&quot;&gt;Vaibhav Gupta&lt;/a&gt;, took the opportunity provided
by Google Summer of Code to improve the search.
The main goals of my &lt;a class=&quot;reference external&quot; href=&quot;https://summerofcode.withgoogle.com/projects/#5465587940065280&quot;&gt;GSoC project&lt;/a&gt; were:&lt;/p&gt;
&lt;ul class=&quot;simple&quot;&gt;
&lt;li&gt;to make a &lt;a class=&quot;reference external&quot; href=&quot;https://readthedocs-sphinx-search.readthedocs.io/en/latest/&quot;&gt;Sphinx extension&lt;/a&gt; to provide “search you type” experience to the users.&lt;/li&gt;
&lt;li&gt;to add support for multiple hits per search result.&lt;/li&gt;
&lt;li&gt;to improve the UI/UX around code search.&lt;/li&gt;
&lt;li&gt;to add support for search analytics.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Search as you type feature is live on our docs.
You can go through these links to experience it:&lt;/p&gt;
&lt;ul class=&quot;simple&quot;&gt;
&lt;li&gt;&lt;a class=&quot;reference external&quot; href=&quot;https://docs.readthedocs.io/?rtd_search=contributing&quot;&gt;https://docs.readthedocs.io/?rtd_search=contributing&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&quot;reference external&quot; href=&quot;https://docs.readthedocs.io/?rtd_search=api/v3/projects/&quot;&gt;https://docs.readthedocs.io/?rtd_search=api/v3/projects/&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;div class=&quot;section&quot; id=&quot;google-summer-of-code&quot;&gt;
&lt;h2&gt;Google Summer of Code&lt;/h2&gt;
&lt;p&gt;Google Summer of Code is a global program where students work with
an open source organization on a 3-month programming project.
I got accepted in the program and was excited to spend my summer with Read the Docs.&lt;/p&gt;
&lt;p&gt;I have worked full time during the GSoC coding period and implemented various features.
All of my search related work can be seen in the &lt;a class=&quot;reference external&quot; href=&quot;https://github.com/orgs/readthedocs/projects/7&quot;&gt;In-Doc Search UI Project Board&lt;/a&gt;.&lt;/p&gt;
&lt;/div&gt;
&lt;div class=&quot;section&quot; id=&quot;background&quot;&gt;
&lt;h2&gt;Background&lt;/h2&gt;
&lt;p&gt;The search code was originally contributed by &lt;a class=&quot;reference external&quot; href=&quot;https://github.com/robhudson&quot;&gt;Rob Hudson&lt;/a&gt;,
&lt;a class=&quot;reference external&quot; href=&quot;https://github.com/readthedocs/readthedocs.org/pull/493&quot;&gt;back in 2013&lt;/a&gt; and then improved upon by other contributors.
It was greatly improved and upgraded by &lt;a class=&quot;reference external&quot; href=&quot;https://github.com/safwanrahman&quot;&gt;Safwan Rahman&lt;/a&gt; during &lt;a class=&quot;reference internal&quot; href=&quot;../../../search-improvements/&quot;&gt;&lt;span class=&quot;doc&quot;&gt;GSoC’18&lt;/span&gt;&lt;/a&gt;.
Continuing on the same path,
I have implemented some new features on top of the existing search backend.&lt;/p&gt;
&lt;/div&gt;
&lt;div class=&quot;section&quot; id=&quot;new-features&quot;&gt;
&lt;h2&gt;New Features&lt;/h2&gt;
&lt;p&gt;During the GSoC period, I have worked on the following features:&lt;/p&gt;
&lt;ul class=&quot;simple&quot;&gt;
&lt;li&gt;&lt;strong&gt;In-Doc Search UI&lt;/strong&gt;: &lt;a class=&quot;reference external&quot; href=&quot;https://github.com/readthedocs/readthedocs-sphinx-search&quot;&gt;readthedocs-sphinx-search&lt;/a&gt; is a sphinx extension that adds a clean and minimal
search UI to your docs. It supports “search as you type” feature.
So, it is now possible to get instant results without being redirected to any other page.
Read the docs &lt;a class=&quot;reference external&quot; href=&quot;https://readthedocs-sphinx-search.readthedocs.io/en/latest/&quot;&gt;here&lt;/a&gt;.&lt;/li&gt;
&lt;/ul&gt;
&lt;div class=&quot;figure align-center&quot; id=&quot;id1&quot;&gt;
&lt;a class=&quot;reference external image-reference&quot; href=&quot;/_static/in-doc-search-demo.gif&quot;&gt;&lt;img alt=&quot;In-doc search ui demo&quot; src=&quot;../../../_images/in-doc-search-demo.gif&quot; style=&quot;width: 100%;&quot; /&gt;&lt;/a&gt;
&lt;p class=&quot;caption&quot;&gt;&lt;span class=&quot;caption-text&quot;&gt;In-Doc Search UI Demo&lt;/span&gt;&lt;/p&gt;
&lt;/div&gt;
&lt;ul class=&quot;simple&quot;&gt;
&lt;li&gt;&lt;strong&gt;Multiple Hits Per Search Result&lt;/strong&gt;: This is one of the highly requested features.
We now support search results from the sections of the docs, clicking on which will take you
to that particular section and not just to the top of the result page.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Code Search&lt;/strong&gt;: We now support code search. If you want to search a particular function
or an API endpoint – you can just type your query and you will find it in the results.
Eg: &lt;code class=&quot;docutils literal notranslate&quot;&gt;&lt;span class=&quot;pre&quot;&gt;api/v3/&lt;/span&gt;&lt;/code&gt; or &lt;code class=&quot;docutils literal notranslate&quot;&gt;&lt;span class=&quot;pre&quot;&gt;module.function&lt;/span&gt;&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Search Analytics&lt;/strong&gt;: We now have support for search analytics.
These analytics makes it easy to know what the users are looking for in your documentation.
You can see these analytics in your project admin dashboard.
Currently, this feature is in beta state and is available under a &lt;a class=&quot;reference external&quot; href=&quot;http://docs.readthedocs.io/page/guides/feature-flags.html&quot;&gt;feature flag&lt;/a&gt;.
We plan to make this available for everyone soon.
If you want to test this feature out and help giving us feedback,
please contact us via &lt;a class=&quot;reference external&quot; href=&quot;https://github.com/readthedocs/readthedocs.org/issues/new&quot;&gt;GitHub issues&lt;/a&gt;.&lt;/li&gt;
&lt;/ul&gt;
&lt;div class=&quot;figure align-center&quot; id=&quot;id2&quot;&gt;
&lt;a class=&quot;reference external image-reference&quot; href=&quot;/_static/search-analytics-demo.png&quot;&gt;&lt;img alt=&quot;Search analytics in project admin dashboard&quot; src=&quot;../../../_images/search-analytics-demo.png&quot; style=&quot;width: 60%;&quot; /&gt;&lt;/a&gt;
&lt;p class=&quot;caption&quot;&gt;&lt;span class=&quot;caption-text&quot;&gt;Search analytics demo dashboard&lt;/span&gt;&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div class=&quot;section&quot; id=&quot;what-next&quot;&gt;
&lt;h2&gt;What Next?&lt;/h2&gt;
&lt;p&gt;We don’t intend to stop just yet.
We are planning to work on some more cool features in the near future,
some of which are:&lt;/p&gt;
&lt;ul class=&quot;simple&quot;&gt;
&lt;li&gt;&lt;strong&gt;Search Facets&lt;/strong&gt;:
Facets can be used to make search more accurate.
For example: In &lt;a class=&quot;reference external&quot; href=&quot;http://docs.celeryproject.org/en/latest/&quot;&gt;Celery docs&lt;/a&gt;, facets can be used to search inside &lt;a class=&quot;reference external&quot; href=&quot;http://docs.celeryproject.org/projects/kombu/en/latest/&quot;&gt;Kombu docs&lt;/a&gt; for “serializers”,
like &lt;code class=&quot;docutils literal notranslate&quot;&gt;&lt;span class=&quot;pre&quot;&gt;subproject:&lt;/span&gt; &lt;span class=&quot;pre&quot;&gt;kombu&lt;/span&gt; &lt;span class=&quot;pre&quot;&gt;serializers&lt;/span&gt;&lt;/code&gt;.
(&lt;a class=&quot;reference external&quot; href=&quot;https://github.com/readthedocs/readthedocs.org/issues/5966&quot;&gt;readthedocs/readthedocs.org#5966&lt;/a&gt;)&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Search Results Ordered By Most Viewed Pages&lt;/strong&gt;:
It would be much more useful if the most viewed pages are shown first in the search results.
(&lt;a class=&quot;reference external&quot; href=&quot;https://github.com/readthedocs/readthedocs.org/issues/5968&quot;&gt;readthedocs/readthedocs.org#5968&lt;/a&gt;)&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Search Inside Sections&lt;/strong&gt;:
It would be good if users have the option to get the
search results from a particular section of the documentation.
For example: Getting results from only &lt;a class=&quot;reference external&quot; href=&quot;https://docs.readthedocs.io/page/guides/&quot;&gt;Guides&lt;/a&gt; of our &lt;a class=&quot;reference external&quot; href=&quot;https://docs.readthedocs.io/&quot;&gt;documentation&lt;/a&gt;.
(&lt;a class=&quot;reference external&quot; href=&quot;https://github.com/readthedocs/readthedocs-sphinx-search/issues/23&quot;&gt;readthedocs/readthedocs-sphinx-search#23&lt;/a&gt;).&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;div class=&quot;section&quot; id=&quot;contributors-wanted&quot;&gt;
&lt;h2&gt;Contributors Wanted&lt;/h2&gt;
&lt;p&gt;As Read the Docs is an open source project backed by a small team of developers,
most of them are busy just keeping the site up and running.
Therefore, it’s quite hard for them to take time to implement new features.
If you know some bit of Django or Python and Elasticsearch,
you can contribute to the search functionality of Read the Docs.
If you need any support to start contributing,
you can get in touch with me or any member of Read the Docs team.
You can find all of us at &lt;em&gt;#readthedocs&lt;/em&gt; freenode IRC channel or &lt;a class=&quot;reference external&quot; href=&quot;https://gitter.im/rtfd/readthedocs.org&quot;&gt;readthedocs gitter&lt;/a&gt; channel.
I am &lt;em&gt;dojutsu-user&lt;/em&gt; at IRC and &lt;em&gt;&amp;#64;dojutsu-user&lt;/em&gt; at gitter.&lt;/p&gt;
&lt;/div&gt;
&lt;div class=&quot;section&quot; id=&quot;conclusion&quot;&gt;
&lt;h2&gt;Conclusion&lt;/h2&gt;
&lt;p&gt;These new features will make it much easier to find the relevant information in the docs.
There are an infinite number of ways it can be improved and I believe we can compete
with major search engines in terms of documentation searching.
We don’t need superhero or coding guru, just need people who understand Python,
Django and Elasticsearch and have some time to write some code for us.
You are a &lt;strong&gt;Superhero&lt;/strong&gt; to us if you can lend your time and effort to improve Read the Docs.&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
</content>
  </entry>
  <entry xml:base="https://blog.readthedocs.com/archive/tag/gsoc/atom.xml">
    <title type="text">Improved Search</title>
    <id>https://blog.readthedocs.com/search-improvements/</id>
    <updated>2019-02-11T00:00:00Z</updated>
    <published>2019-02-11T00:00:00Z</published>
    <link href="https://blog.readthedocs.com/search-improvements/" />
    <author>
      <name>Safwan Rahman</name>
    </author>
    <content type="html">&lt;div class=&quot;section&quot; id=&quot;improved-search&quot;&gt;

&lt;p&gt;Have you ever struggled with a poorly documented software project?
What about a well documented project but you can’t find the right section inside the docs?
The Read the Docs &lt;a class=&quot;reference external&quot; href=&quot;https://docs.readthedocs.io/en/latest/team.html#development-team&quot;&gt;core team&lt;/a&gt; has realized the importance of good search for documentation
and got me to take the challenge as a Google Summer of Code student.
The main goal of my GSoC project was to refactor the search code together with upgrading the backend
search engine, as well as adding more features to our search functionality like exact match search,
case insensitive search, search as you type, suggestions and more.&lt;/p&gt;
&lt;div class=&quot;section&quot; id=&quot;google-summer-of-code&quot;&gt;
&lt;h2&gt;Google Summer of Code&lt;/h2&gt;
&lt;p&gt;Google Summer of Code is a global program where students work with an open source organization
on a 3 month programming project. The core team of Read the Docs proposed some &lt;a class=&quot;reference external&quot; href=&quot;https://git.io/fN9GK&quot;&gt;Project Ideas&lt;/a&gt;,
one of them was &lt;strong&gt;Refactor &amp;amp; improve our search code&lt;/strong&gt;. I (&lt;a class=&quot;reference external&quot; href=&quot;https://github.com/safwanrahman&quot;&gt;Safwan Rahman&lt;/a&gt;) was keen to get my hands dirty with
&lt;a class=&quot;reference external&quot; href=&quot;https://www.elastic.co/products/elasticsearch&quot;&gt;Elasticsearch&lt;/a&gt; and grasped the opportunity to do so by applying
for this project and I got accepted.&lt;/p&gt;
&lt;p&gt;I have worked full time for from April to August to upgrade the whole codebase
to compatible with &lt;a class=&quot;reference external&quot; href=&quot;https://www.elastic.co/guide/en/elasticsearch/reference/6.3/index.html&quot;&gt;Elasticsearch 6.x&lt;/a&gt; and also implemented various features like:&lt;/p&gt;
&lt;ul class=&quot;simple&quot;&gt;
&lt;li&gt;&lt;a class=&quot;reference external&quot; href=&quot;https://github.com/rtfd/readthedocs.org/issues/2457&quot;&gt;Exact Matching Search&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&quot;reference external&quot; href=&quot;https://github.com/rtfd/readthedocs.org/issues/2328&quot;&gt;Case Insensitive Search&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&quot;reference external&quot; href=&quot;https://github.com/rtfd/readthedocs.org/pull/4292&quot;&gt;Improved Result Order&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&quot;reference external&quot; href=&quot;https://github.com/rtfd/readthedocs.org/pull/4368&quot;&gt;Zero Downtime Indexing&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Together with this, we are planning more features like the following:&lt;/p&gt;
&lt;ul class=&quot;simple&quot;&gt;
&lt;li&gt;&lt;a class=&quot;reference external&quot; href=&quot;https://github.com/rtfd/readthedocs.org/issues/504&quot;&gt;Search as You Type and Autocomplete&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&quot;reference external&quot; href=&quot;https://github.com/rtfd/readthedocs.org/issues/4289&quot;&gt;Code Search&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;All of my search related work can be seen in the &lt;a class=&quot;reference external&quot; href=&quot;https://github.com/orgs/rtfd/projects/3&quot;&gt;Search Project Board&lt;/a&gt;.&lt;/p&gt;
&lt;/div&gt;
&lt;div class=&quot;section&quot; id=&quot;background&quot;&gt;
&lt;h2&gt;Background&lt;/h2&gt;
&lt;p&gt;Search is a vital part of any documentation hosting platform, so people can get the
information they need. As a documentation hosting platform, the same rules apply to
Read the Docs. Because of having a small core team, the search functionality
of Read the Docs has lagged behind for quite a while now. Initially the search code
was voluntarily contributed by &lt;a class=&quot;reference external&quot; href=&quot;https://github.com/robhudson&quot;&gt;Rob Hudson&lt;/a&gt;,  &lt;a class=&quot;reference external&quot; href=&quot;https://github.com/rtfd/readthedocs.org/pull/493&quot;&gt;back in 2013&lt;/a&gt; and then improved by other
contributors. The search infrastructure was already outdated as
Read the Docs were using &lt;a class=&quot;reference external&quot; href=&quot;https://www.elastic.co/guide/en/elasticsearch/reference/1.3/index.html&quot;&gt;Elasticsearch 1.3.x&lt;/a&gt; which was already reached its
End of Life in 2016. Therefore, Upgrading the search infrastructure was badly needed.&lt;/p&gt;
&lt;div class=&quot;section&quot; id=&quot;built-in-search-vs-read-the-docs-search&quot;&gt;
&lt;h3&gt;Built in Search vs Read the Docs Search&lt;/h3&gt;
&lt;p&gt;Both Sphinx and MkDocs already have built in search functionality. But the features are very limited.
At Read the Docs, we have felt the limitations and therefore we index the documentations in our
&lt;a class=&quot;reference external&quot; href=&quot;https://www.elastic.co/products/elasticsearch&quot;&gt;Elasticsearch&lt;/a&gt; index so that we can provide better search experience like:&lt;/p&gt;
&lt;ul class=&quot;simple&quot;&gt;
&lt;li&gt;Search across multiple projects&lt;/li&gt;
&lt;li&gt;Advanced query syntax&lt;/li&gt;
&lt;li&gt;Search inside subprojects&lt;/li&gt;
&lt;li&gt;Improved search result order&lt;/li&gt;
&lt;li&gt;Public Search API (Documentation pending)&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;Currently, we do not index MkDocs documents with&lt;/strong&gt; &lt;a class=&quot;reference external&quot; href=&quot;https://www.elastic.co/products/elasticsearch&quot;&gt;Elasticsearch&lt;/a&gt;,
but &lt;a class=&quot;reference external&quot; href=&quot;https://github.com/rtfd/readthedocs.org/issues/1088&quot;&gt;any kind of help is welcome&lt;/a&gt;.&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div class=&quot;section&quot; id=&quot;new-features&quot;&gt;
&lt;h2&gt;New Features&lt;/h2&gt;
&lt;p&gt;In the 4 months of full time work, I have implemented these features along with
many bug fixes. Some of the major features are as following:&lt;/p&gt;
&lt;ul class=&quot;simple&quot;&gt;
&lt;li&gt;&lt;a class=&quot;reference external&quot; href=&quot;https://github.com/rtfd/readthedocs.org/issues/2457&quot;&gt;Exact Matching Search&lt;/a&gt;: Exact matching is one of our most highly requested
features for Read the Docs. Now you can search for exact word in documentation
by having your query inside quotation (&lt;code class=&quot;docutils literal notranslate&quot;&gt;&lt;span class=&quot;pre&quot;&gt;&amp;quot;&amp;quot;&lt;/span&gt;&lt;/code&gt;). So if you search
for &lt;code class=&quot;docutils literal notranslate&quot;&gt;&lt;span class=&quot;pre&quot;&gt;&amp;quot;Here&lt;/span&gt; &lt;span class=&quot;pre&quot;&gt;is&lt;/span&gt; &lt;span class=&quot;pre&quot;&gt;foo&amp;quot;&lt;/span&gt;&lt;/code&gt; (with the quotation), you will get all the documentation where the full
&lt;code class=&quot;docutils literal notranslate&quot;&gt;&lt;span class=&quot;pre&quot;&gt;Here&lt;/span&gt; &lt;span class=&quot;pre&quot;&gt;is&lt;/span&gt; &lt;span class=&quot;pre&quot;&gt;foo&lt;/span&gt;&lt;/code&gt; phrase exists.&lt;/li&gt;
&lt;li&gt;Simple Query String Syntax support: Now you can use &lt;a class=&quot;reference external&quot; href=&quot;https://www.elastic.co/guide/en/elasticsearch/reference/current/query-dsl-simple-query-string-query.html#_simple_query_string_syntax&quot;&gt;Simple Query String Syntax&lt;/a&gt; for
searching. For example, if you search with &lt;code class=&quot;docutils literal notranslate&quot;&gt;&lt;span class=&quot;pre&quot;&gt;Mozilla&lt;/span&gt; &lt;span class=&quot;pre&quot;&gt;+-Firefox&lt;/span&gt;&lt;/code&gt;, you will get documentation
where the &lt;code class=&quot;docutils literal notranslate&quot;&gt;&lt;span class=&quot;pre&quot;&gt;Mozilla&lt;/span&gt;&lt;/code&gt; word is present, but &lt;code class=&quot;docutils literal notranslate&quot;&gt;&lt;span class=&quot;pre&quot;&gt;Firefox&lt;/span&gt;&lt;/code&gt; word is not present.
For more information, you can look at the &lt;a class=&quot;reference external&quot; href=&quot;https://www.elastic.co/guide/en/elasticsearch/reference/current/query-dsl-simple-query-string-query.html#_simple_query_string_syntax&quot;&gt;Simple Query String Syntax&lt;/a&gt; documentation.&lt;/li&gt;
&lt;li&gt;&lt;a class=&quot;reference external&quot; href=&quot;https://github.com/rtfd/readthedocs.org/issues/2328&quot;&gt;Case Insensitive Search&lt;/a&gt;: The search is now case insensitive. So if you search for &lt;cite&gt;Foo&lt;/cite&gt;,
you will get all the documentation which have one of either &lt;code class=&quot;docutils literal notranslate&quot;&gt;&lt;span class=&quot;pre&quot;&gt;Foo&lt;/span&gt;&lt;/code&gt;, &lt;code class=&quot;docutils literal notranslate&quot;&gt;&lt;span class=&quot;pre&quot;&gt;FOO&lt;/span&gt;&lt;/code&gt;, &lt;code class=&quot;docutils literal notranslate&quot;&gt;&lt;span class=&quot;pre&quot;&gt;foo&lt;/span&gt;&lt;/code&gt; or &lt;code class=&quot;docutils literal notranslate&quot;&gt;&lt;span class=&quot;pre&quot;&gt;fOO&lt;/span&gt;&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;&lt;a class=&quot;reference external&quot; href=&quot;https://github.com/rtfd/readthedocs.org/pull/4292&quot;&gt;Improved Result order&lt;/a&gt;: The result order is improved dramatically. Therefore if you Search
with &lt;code class=&quot;docutils literal notranslate&quot;&gt;&lt;span class=&quot;pre&quot;&gt;Foo&lt;/span&gt; &lt;span class=&quot;pre&quot;&gt;Bar&lt;/span&gt;&lt;/code&gt;, you will first see the documentation which have both &lt;code class=&quot;docutils literal notranslate&quot;&gt;&lt;span class=&quot;pre&quot;&gt;Foo&lt;/span&gt; &lt;span class=&quot;pre&quot;&gt;Bar&lt;/span&gt;&lt;/code&gt;, then
you will see other documentation which have either &lt;code class=&quot;docutils literal notranslate&quot;&gt;&lt;span class=&quot;pre&quot;&gt;Foo&lt;/span&gt;&lt;/code&gt; or &lt;code class=&quot;docutils literal notranslate&quot;&gt;&lt;span class=&quot;pre&quot;&gt;Bar&lt;/span&gt;&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&quot;reference external&quot; href=&quot;https://github.com/rtfd/readthedocs.org/issues/2013&quot;&gt;Auto Removing from Search Index&lt;/a&gt;: In the past, if any page got removed from documentation,
the page was still available in documentation. But from now on, the page will be removed
automatically from the search index as soon as its no longer in the documentation.&lt;/li&gt;
&lt;li&gt;&lt;a class=&quot;reference external&quot; href=&quot;https://github.com/rtfd/readthedocs.org/pull/4368&quot;&gt;Zero Downtime Indexing&lt;/a&gt;: As search is an important part of documentation, there will be no
downtime while we reindex our Elasticsearch Index. So the search will be much more reliable
than before.&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;div class=&quot;section&quot; id=&quot;code-improvements&quot;&gt;
&lt;h2&gt;Code Improvements&lt;/h2&gt;
&lt;p&gt;Code quality is very important in development world, specially in open source.
As I have rewritten the search functionality from scratch, the code quality
is improved in many ways like test coverage and documentation. So its easy for
any contributor to start working on the search functionality&lt;/p&gt;
&lt;/div&gt;
&lt;div class=&quot;section&quot; id=&quot;contributors-wanted&quot;&gt;
&lt;h2&gt;Contributors Wanted&lt;/h2&gt;
&lt;p&gt;As Read the Docs is an open source project backed by a small team of developers,
most of them are busy to keep things up and running only. Therefore, its quite
hard for them to take time to implement new features. If you know some bit of
Django or Python and Elasticsearch, you can contribute into the search functionality
of Read the Docs. If you need any support to start contributing, you can get in touch with
me or any member of  Read the Docs team. You can find all of us at &lt;cite&gt;#readthedocs&lt;/cite&gt; freenode
IRC channel or &lt;a class=&quot;reference external&quot; href=&quot;https://gitter.im/rtfd/readthedocs.org&quot;&gt;readthedocs gitter&lt;/a&gt; channel. I am &lt;cite&gt;safwan&lt;/cite&gt; at IRC and &lt;cite&gt;&amp;#64;safwanrahman&lt;/cite&gt;
at gitter.&lt;/p&gt;
&lt;/div&gt;
&lt;div class=&quot;section&quot; id=&quot;conclusion&quot;&gt;
&lt;h2&gt;Conclusion&lt;/h2&gt;
&lt;p&gt;To conclude, I must say that the Search improvement in Read the Docs was very
necessary and I’m glad I could improve it in such a short amount of time.
There are an infinite number of ways it can be improved and I believe we can compete
with major search engines in terms of documentation searching.
Due to the constraints of only working for three months,
a number of compelling features were left out such as &lt;a class=&quot;reference external&quot; href=&quot;https://github.com/rtfd/readthedocs.org/issues/504&quot;&gt;Search as You Type and Autocomplete&lt;/a&gt; and
&lt;a class=&quot;reference external&quot; href=&quot;https://github.com/rtfd/readthedocs.org/issues/4289&quot;&gt;Code Search&lt;/a&gt; functionality. Moreover, proper documentation is needed for the search
architecture. I have tried to write test cases for most of the scenario, but because of
time constrains, a lot of code is out of test coverage.&lt;/p&gt;
&lt;p&gt;I strongly hope that we will get the left behind work done within a short amount of time.
This can be done easily if we get more contributors donate their time for improving Read the Docs.
We don’t need superhero or coding guru, just need people who understand Python, Django and
Elasticsearch and have some time to write some code for us. You are a &lt;strong&gt;Superhero&lt;/strong&gt; to us
if you can lend your time and effort to improve Read the Docs.&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
</content>
  </entry>
</feed>
