Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Cloud Search with Active Asari

Cloud Search with Active Asari

A gem to make searching Amazon cloud search a bit more like sunspot. https://github.com/playon/active-asari

Presented by Lance Gleason of Polyglot Programming Inc http://www.polyglotprogramminginc.com

Lance Gleason

February 28, 2014
Tweet

More Decks by Lance Gleason

Other Decks in Programming

Transcript

  1. None
  2. Introductions

  3. Twitter @lgleasain Github lgleasain ! www.lancegleason.com www.polyglotprogrammincinc.com lgleason@polyglotprogramminginc.com !

  4. None
  5. None
  6. None
  7. None
  8. http://www.polyglotprogramminginc.com/purr- programming-2-0/

  9. www.purrprogramming.com

  10. ?

  11. Search

  12. Active Record

  13. User.where :name => ‘beavis’

  14. Bea

  15. Beavis

  16. User.where ‘name like ?’, ‘bea’

  17. None
  18. Person action: ‘eat’ Eating

  19. Stemming

  20. Stemming

  21. •Postgres Stemming

  22. •Postgres •Mongodb Stemming

  23. •Postgres •Mongodb •Riak Stemming

  24. None
  25. •Inconsistent

  26. •Inconsistent •Slow

  27. None
  28. None
  29. Sunspot

  30. Strengths

  31. •Faceted Search Strengths

  32. •Faceted Search •Multilingual Support Strengths

  33. •Faceted Search •Multilingual Support •Field Weighting Strengths

  34. •Faceted Search •Multilingual Support •Field Weighting •Auto Suggest Strengths

  35. •Faceted Search •Multilingual Support •Field Weighting •Auto Suggest •Geospacial Search

    Strengths
  36. •Faceted Search •Multilingual Support •Field Weighting •Auto Suggest •Geospacial Search

    •Find Similar Strengths
  37. Strengths

  38. •Did you mean Strengths

  39. •Did you mean •Rich Document Support Strengths

  40. •Did you mean •Rich Document Support •Stemming Strengths

  41. •Did you mean •Rich Document Support •Stemming •Testability Strengths

  42. Weaknesses

  43. Weaknesses •Scaling

  44. Weaknesses •Scaling •Index distribution and partitions

  45. Weaknesses •Scaling •Index distribution and partitions •Index replication

  46. Weaknesses •Scaling •Index distribution and partitions •Index replication •High Availability

  47. Weaknesses •Scaling •Index distribution and partitions •Index replication •High Availability

    •Cost at scale
  48. None
  49. None
  50. Asari

  51. Asari Active Asari

  52. Strengths

  53. •Faceted Search Strengths

  54. •Faceted Search •Field Weighting Strengths

  55. •Faceted Search •Field Weighting •Rich Document Support Strengths

  56. •Faceted Search •Field Weighting •Rich Document Support •Stemming Strengths

  57. Strengths

  58. •Index distribution and partitions Strengths

  59. •Index distribution and partitions •Index replication Strengths

  60. •Index distribution and partitions •Index replication •High Availability Strengths

  61. •Index distribution and partitions •Index replication •High Availability •Cost at

    scale Strengths
  62. •Index distribution and partitions •Index replication •High Availability •Cost at

    scale •Scaling Strengths
  63. Weaknesses

  64. Weaknesses •Multilingual Support

  65. Weaknesses •Multilingual Support •Auto Suggest

  66. Weaknesses •Multilingual Support •Auto Suggest •Find Similar

  67. Weaknesses •Multilingual Support •Auto Suggest •Find Similar •Did you mean

  68. Weaknesses •Multilingual Support •Auto Suggest •Find Similar •Did you mean

    •Proprietary
  69. Key Terms

  70. None
  71. Domain

  72. Domain Index Fields

  73. Domain Index Fields •uint - 32 bit unsigned integer

  74. Domain Index Fields •uint - 32 bit unsigned integer •literal

  75. Domain Index Fields •uint - 32 bit unsigned integer •literal

    •text
  76. Search Facet Result Uint R R R Literal O O

    O Text R O O
  77. Access Policies are IP based like S3

  78. None
  79. Add/Remove

  80. Add/Remove

  81. None
  82. Adding Indexes

  83. Adding Indexes

  84. None
  85. Searching

  86. Searching

  87. Searching

  88. Things You Have To Manage

  89. Things You Have To Manage •Domain Names

  90. Things You Have To Manage •Domain Names •Domain Id’s for

    each domain
  91. Things You Have To Manage •Domain Names •Domain Id’s for

    each domain •Boiler plate code for searches
  92. Things You Have To Manage •Domain Names •Domain Id’s for

    each domain •Boiler plate code for searches •Calls to update indexes
  93. Things You Have To Manage •Domain Names •Domain Id’s for

    each domain •Boiler plate code for searches •Calls to update indexes •Access Permissions.
  94. Things You Have To Manage •Domain Names •Domain Id’s for

    each domain •Boiler plate code for searches •Calls to update indexes •Access Permissions. •Etc….
  95. None
  96. An Easier Way

  97. An Easier Way

  98. An Easier Way

  99. None
  100. active_asari.yml

  101. active_asari.yml

  102. None
  103. active_asari_config.yml

  104. active_asari_config.yml

  105. active_asari = ActiveAsari::Migrations.new active_asari.migrate_all

  106. Migrations can take up to 30 minutes

  107. None
  108. In Your Model

  109. In Your Model

  110. All Transactions Are Synced with Cloud Search

  111. None
  112. Searching

  113. Searching

  114. Searching

  115. None
  116. Result

  117. {‘666’ => ActiveAsari::ResultObject} Result

  118. {‘666’ => ActiveAsari::ResultObject} Result

  119. {‘666’ => ActiveAsari::ResultObject} All result fields have methods off of

    the object Result
  120. All Asari Methods are Available

  121. None
  122. Roadmap

  123. Roadmap • Possibly merge Asari and Active Asari

  124. Roadmap • Possibly merge Asari and Active Asari • Add

    Rake tasks for migrations
  125. Roadmap • Possibly merge Asari and Active Asari • Add

    Rake tasks for migrations • ?
  126. Twitter @lgleasain Github lgleasain ! www.lancegleason.com www.polyglotprogrammincinc.com lgleason@polyglotprogramminginc.com !