Bruno C. Vellutini<p><strong>EvoDevo Papers: full archive and search functionality</strong></p><p>I’ve <a href="https://github.com/bruvellu/evodevo-papers/releases" rel="nofollow noopener" target="_blank">released</a> a major update to <a href="https://evodevo.brunovellutini.com" rel="nofollow noopener" target="_blank">EvoDevo Papers</a>. The database now has all the papers posted since 2015 and a new search form for swiftly exploring the contents.</p><p><strong>Full archive</strong></p><p>In the <a href="https://brunovellutini.com/posts/evodevo-papers-website/" rel="nofollow noopener" target="_blank">previous update</a>, I improved the website by creating separate pages for feeds, posts and individual papers to make the database contents accessible to anyone wanting to discover recent papers in the field of evo-devo. However, the archive was incomplete. None of the papers posted during the Twitter era (2015–2023) were present because the website only had the papers posted after <a href="https://brunovellutini.com/posts/evodevo-papers-refactored/" rel="nofollow noopener" target="_blank">the big refactoring</a>. But, now, this is solved. I imported all the legacy tweets to the database. EvoDevo Papers now has about 1.8k papers.</p><p><strong>Search</strong></p><p>With this many papers, browsing and finding relevant posts becomes harder. To improve this I implemented a basic search functionality and, I have to say, I’m quite pleased with the results:</p>Screencast of new search form in EvoDevo Papers.<p>Searching is fast and unobtrusive and works great for a quick check using your favorite keywords. But note, however, that only the papers’ titles are indexed. This is a limitation from the original feeds which don’t add other information reliably, like the abstract or the authors; the only field guaranteed to be there is the title.</p><p>On the technical side, implementing a search like this was new to me. The website is based on <a href="https://brunovellutini.com/posts/tag/django-en/" rel="nofollow noopener" target="_blank">Django</a> but it’s rendered to static files using <a href="https://django-distill.com/" rel="nofollow noopener" target="_blank">django-distill</a>. Therefore, I couldn’t use a standard <a href="https://brunovellutini.com/posts/django-searchvectorfield/" rel="nofollow noopener" target="_blank">SearchVector</a>, for example, as the website is made of static HTML files. After some searching and testing, I eventually settled on a JavaScript library called <a href="https://github.com/nextapps-de/flexsearch" rel="nofollow noopener" target="_blank">FlexSearch</a>. It can index and perform the search entirely on the client-side, and it’s fast. And after a couple of iterations, I even got the autocomplete and the word highlighting to work. I hope these features improve the search experience for the evo-devo enthusiasts using the website.</p><p><strong>Outlook</strong></p><p>The full archive and search functionality mark a milestone for <a href="https://evodevo.brunovellutini.com" rel="nofollow noopener" target="_blank">EvoDevo Papers</a>. I consider the project more or less feature-complete. Maybe I’ll do improvements here and there, but I likely won’t implement major new features. Using RSS feeds as a source of content has its limitations, which I plan to overcome in another project (still in development). Now, for EvoDevo Papers, I will focus on adding more sources, like other journals and preprint repositories, and on improving the filters of search-based feeds to increase the representation of evo-devo papers collected by the app.</p><p>—<br>URL: <a href="https://brunovellutini.com/posts/evodevo-papers-search/" rel="nofollow noopener" translate="no" target="_blank"><span class="invisible">https://</span><span class="ellipsis">brunovellutini.com/posts/evode</span><span class="invisible">vo-papers-search/</span></a></p><p><a rel="nofollow noopener" class="hashtag u-tag u-category" href="https://brunovellutini.com/posts/tag/bibliography/" target="_blank">#bibliography</a> <a rel="nofollow noopener" class="hashtag u-tag u-category" href="https://brunovellutini.com/posts/tag/django-en/" target="_blank">#django</a> <a rel="nofollow noopener" class="hashtag u-tag u-category" href="https://brunovellutini.com/posts/tag/evo-devo-en/" target="_blank">#evoDevo</a> <a rel="nofollow noopener" class="hashtag u-tag u-category" href="https://brunovellutini.com/posts/tag/evodevo-papers-en/" target="_blank">#evodevoPapers</a> <a rel="nofollow noopener" class="hashtag u-tag u-category" href="https://brunovellutini.com/posts/tag/javascript-en/" target="_blank">#javascript</a> <a rel="nofollow noopener" class="hashtag u-tag u-category" href="https://brunovellutini.com/posts/tag/python-en/" target="_blank">#python</a> <a rel="nofollow noopener" class="hashtag u-tag u-category" href="https://brunovellutini.com/posts/tag/web-development/" target="_blank">#webDevelopment</a></p>