{"id":3739,"date":"2018-05-09T18:35:45","date_gmt":"2018-05-09T18:35:45","guid":{"rendered":"http:\/\/www.gubatron.com\/blog\/?p=3739"},"modified":"2018-05-09T18:40:38","modified_gmt":"2018-05-09T18:40:38","slug":"introducing-yuca-a-light-weight-in-memory-fast-and-simple-to-use-search-engine-library","status":"publish","type":"post","link":"https:\/\/www.gubatron.com\/blog\/introducing-yuca-a-light-weight-in-memory-fast-and-simple-to-use-search-engine-library\/","title":{"rendered":"Introducing Yuca: A light-weight, in-memory, fast and simple to use search engine library."},"content":{"rendered":"<p><a href=\"https:\/\/github.com\/gubatron\/yuca\" rel=\"noopener\" target=\"_blank\">https:\/\/github.com\/gubatron\/yuca<\/a><\/p>\n<p>If your app can&#8217;t handle or doesn&#8217;t really need installing a full featured and heavy search engine like Lucene, nor you want to depend on a SQL database for indexing and doing simple search based strings you can use Yuca to index documents under any number of arbitrary keys which can be grouped under tags.<\/p>\n<p>The shared library currently weighs ~170kb without any packing optimizations, we hope to reduce the size further in the near future.<\/p>\n<p><img data-recalc-dims=\"1\" loading=\"lazy\" decoding=\"async\" src=\"https:\/\/i0.wp.com\/www.gubatron.com\/blog\/wp-content\/uploads\/2018\/05\/yuca-unit-test-screenshot-optimized-1024x743.png?resize=640%2C464\" alt=\"\" width=\"640\" height=\"464\" class=\"alignnone size-large wp-image-3743\" srcset=\"https:\/\/i0.wp.com\/www.gubatron.com\/blog\/wp-content\/uploads\/2018\/05\/yuca-unit-test-screenshot-optimized.png?resize=1024%2C743&amp;ssl=1 1024w, https:\/\/i0.wp.com\/www.gubatron.com\/blog\/wp-content\/uploads\/2018\/05\/yuca-unit-test-screenshot-optimized.png?resize=300%2C218&amp;ssl=1 300w, https:\/\/i0.wp.com\/www.gubatron.com\/blog\/wp-content\/uploads\/2018\/05\/yuca-unit-test-screenshot-optimized.png?resize=768%2C557&amp;ssl=1 768w, https:\/\/i0.wp.com\/www.gubatron.com\/blog\/wp-content\/uploads\/2018\/05\/yuca-unit-test-screenshot-optimized.png?w=1754&amp;ssl=1 1754w, https:\/\/i0.wp.com\/www.gubatron.com\/blog\/wp-content\/uploads\/2018\/05\/yuca-unit-test-screenshot-optimized.png?w=1280&amp;ssl=1 1280w\" sizes=\"auto, (max-width: 640px) 100vw, 640px\" \/><\/p>\n<p>Today, Wed May 9th the library is only available as a C++ shared or static library, the goal is to have bindings for popular programming languages, the first being Java since I need to use it on Android apps I&#8217;m developing.<\/p>\n<p>If you feel like you need something like this and you&#8217;re not coding in C++, please create an issue on the github repository asking for the language bindings that you need and I&#8217;ll try to prioritize your request for the next set of language bindings.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>https:\/\/github.com\/gubatron\/yuca If your app can&#8217;t handle or doesn&#8217;t really need installing a full featured and heavy search engine like Lucene, nor you want to depend on a SQL database for indexing and doing simple search based strings you can use Yuca to index documents under any number of arbitrary keys which can be grouped under [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":3744,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"jetpack_post_was_ever_published":false,"_jetpack_newsletter_access":"","_jetpack_dont_email_post_to_subs":false,"_jetpack_newsletter_tier_id":0,"_jetpack_memberships_contains_paywalled_content":false,"_jetpack_memberships_contains_paid_content":false,"footnotes":"","jetpack_publicize_message":"","jetpack_publicize_feature_enabled":true,"jetpack_social_post_already_shared":true,"jetpack_social_options":{"image_generator_settings":{"template":"highway","default_image_id":0,"font":"","enabled":false},"version":2}},"categories":[15],"tags":[1591,1589,1590,1390,878,1588],"class_list":["post-3739","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-code","tag-free-search-engine","tag-library","tag-lightweight-search-engine","tag-opensource","tag-search-engine","tag-yuca"],"jetpack_publicize_connections":[],"jetpack_featured_media_url":"https:\/\/i0.wp.com\/www.gubatron.com\/blog\/wp-content\/uploads\/2018\/05\/yuca.jpg?fit=872%2C505&ssl=1","jetpack_sharing_enabled":true,"jetpack_shortlink":"https:\/\/wp.me\/p5Unzf-Yj","jetpack-related-posts":[{"id":775,"url":"https:\/\/www.gubatron.com\/blog\/mybloopcom-as-a-search-engine-in-firefox\/","url_meta":{"origin":3739,"position":0},"title":"MyBloop.com as a search engine in Firefox","author":"gubatron","date":"April 14, 2008","format":false,"excerpt":"MyBloop.com as a search engine in Firefox Originally uploaded by Gubatron. Sneak peak of what the next MyBloop.com version will have to offer.","rel":"","context":"In &quot;Geeklife&quot;","block_context":{"text":"Geeklife","link":"https:\/\/www.gubatron.com\/blog\/category\/geeklife\/"},"img":{"alt_text":"","src":"","width":0,"height":0},"classes":[]},{"id":2943,"url":"https:\/\/www.gubatron.com\/blog\/archive-org-as-a-new-search-engine-in-frostwire\/","url_meta":{"origin":3739,"position":1},"title":"Archive.org as a new search engine in FrostWire puts millions of free legal files in your hands.","author":"gubatron","date":"March 28, 2013","format":false,"excerpt":"We're currently polishing our next release of FrostWire for Android 1.0.6. Our last release was back in November 2012, since then we've received crash reports and lots of complaints that have helped us make the next FrostWire for Android much more robust and compatible for the +2,600 different supported Android\u2026","rel":"","context":"In \"Android\"","block_context":{"text":"Android","link":"https:\/\/www.gubatron.com\/blog\/tag\/android\/"},"img":{"alt_text":"","src":"","width":0,"height":0},"classes":[]},{"id":3383,"url":"https:\/\/www.gubatron.com\/blog\/things-to-remember-when-compilinglinking-cc-software\/","url_meta":{"origin":3739,"position":2},"title":"# Things to remember when compiling\/linking C\/C++ software","author":"gubatron","date":"March 18, 2015","format":false,"excerpt":"by Angel Leon. March 17, 2015. Include Paths On the compilation phase, you will usually need to specify the different include paths so that the interfaces (.h, .hpp) which define structs, classes, constans, and functions can be found. With gcc and llvm include paths are passed with -I\/path\/to\/includes, you can\u2026","rel":"","context":"In &quot;Code&quot;","block_context":{"text":"Code","link":"https:\/\/www.gubatron.com\/blog\/category\/code\/"},"img":{"alt_text":"","src":"https:\/\/i0.wp.com\/www.gubatron.com\/blog\/wp-content\/uploads\/2015\/03\/make-all-executables.png?fit=680%2C510&ssl=1&resize=350%2C200","width":350,"height":200,"srcset":"https:\/\/i0.wp.com\/www.gubatron.com\/blog\/wp-content\/uploads\/2015\/03\/make-all-executables.png?fit=680%2C510&ssl=1&resize=350%2C200 1x, https:\/\/i0.wp.com\/www.gubatron.com\/blog\/wp-content\/uploads\/2015\/03\/make-all-executables.png?fit=680%2C510&ssl=1&resize=525%2C300 1.5x"},"classes":[]},{"id":3064,"url":"https:\/\/www.gubatron.com\/blog\/new-frostwire-for-android-1-0-8-out\/","url_meta":{"origin":3739,"position":3},"title":"New FrostWire for Android 1.0.8 out","author":"gubatron","date":"June 1, 2013","format":false,"excerpt":"A new FrostWire for Android is out on Google Play. In this release we improved our search algorithm to include relevant search results that were being hidden in previous versions. We've also made use of Square's Picasso Image loading\/caching library for displaying all the images on the user interface, resulting\u2026","rel":"","context":"In \"Android\"","block_context":{"text":"Android","link":"https:\/\/www.gubatron.com\/blog\/tag\/android\/"},"img":{"alt_text":"Screenshot of the new FrostWire for Android navigation menu","src":"https:\/\/frostwire.files.wordpress.com\/2013\/05\/468570_620137218016084_1578847253_o.png?w=350&h=200&crop=1","width":350,"height":200},"classes":[]},{"id":835,"url":"https:\/\/www.gubatron.com\/blog\/major-cuilcom-flaw-it-wont-work-with-more-than-2-keywords\/","url_meta":{"origin":3739,"position":4},"title":"Major Cuil.com Flaw: it won&#8217;t work with more than 2 keywords","author":"gubatron","date":"July 28, 2008","format":false,"excerpt":"Everytime I try to do a query with more than two keywords, Cuil says: We didn\u2019t find any results for \u201capple google microsoft\u201d Some reasons might be... * a typo. Please check your spelling. * your search includes a term that is very rare. Try to find a more common\u2026","rel":"","context":"In &quot;Internet&quot;","block_context":{"text":"Internet","link":"https:\/\/www.gubatron.com\/blog\/category\/internet\/"},"img":{"alt_text":"","src":"","width":0,"height":0},"classes":[]},{"id":3041,"url":"https:\/\/www.gubatron.com\/blog\/how-to-use-googles-calculator-to-convert-amps-and-volts-to-kwh\/","url_meta":{"origin":3739,"position":5},"title":"How to use Google&#8217;s calculator to convert Amps and Volts, to kWh","author":"gubatron","date":"May 26, 2013","format":false,"excerpt":"Say you have an electric engine that consumes 8 amps at 12 V, and you would like to know how much this would translate in kilowatt hours? Go to Google's search box and type 8 amps * 12 v * 1 hour And you will get the total output in\u2026","rel":"","context":"In &quot;Geeklife&quot;","block_context":{"text":"Geeklife","link":"https:\/\/www.gubatron.com\/blog\/category\/geeklife\/"},"img":{"alt_text":"Screen Shot 2013-05-26 at 8.27.15 AM","src":"https:\/\/i0.wp.com\/www.gubatron.com\/blog\/wp-content\/uploads\/2013\/05\/Screen-Shot-2013-05-26-at-8.27.15-AM.png?resize=350%2C200","width":350,"height":200,"srcset":"https:\/\/i0.wp.com\/www.gubatron.com\/blog\/wp-content\/uploads\/2013\/05\/Screen-Shot-2013-05-26-at-8.27.15-AM.png?resize=350%2C200 1x, https:\/\/i0.wp.com\/www.gubatron.com\/blog\/wp-content\/uploads\/2013\/05\/Screen-Shot-2013-05-26-at-8.27.15-AM.png?resize=525%2C300 1.5x, https:\/\/i0.wp.com\/www.gubatron.com\/blog\/wp-content\/uploads\/2013\/05\/Screen-Shot-2013-05-26-at-8.27.15-AM.png?resize=700%2C400 2x"},"classes":[]}],"_links":{"self":[{"href":"https:\/\/www.gubatron.com\/blog\/wp-json\/wp\/v2\/posts\/3739","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.gubatron.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.gubatron.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.gubatron.com\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.gubatron.com\/blog\/wp-json\/wp\/v2\/comments?post=3739"}],"version-history":[{"count":2,"href":"https:\/\/www.gubatron.com\/blog\/wp-json\/wp\/v2\/posts\/3739\/revisions"}],"predecessor-version":[{"id":3745,"href":"https:\/\/www.gubatron.com\/blog\/wp-json\/wp\/v2\/posts\/3739\/revisions\/3745"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.gubatron.com\/blog\/wp-json\/wp\/v2\/media\/3744"}],"wp:attachment":[{"href":"https:\/\/www.gubatron.com\/blog\/wp-json\/wp\/v2\/media?parent=3739"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.gubatron.com\/blog\/wp-json\/wp\/v2\/categories?post=3739"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.gubatron.com\/blog\/wp-json\/wp\/v2\/tags?post=3739"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}