Search Presentation

8,432 views

Published on

Published in: Business, Technology
0 Comments
1 Like
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total views
8,432
On SlideShare
0
From Embeds
0
Number of Embeds
35
Actions
Shares
0
Downloads
1
Comments
0
Likes
1
Embeds 0
No embeds

No notes for slide

Search Presentation

  1. 1. Barcelona DrupalCon An Update on Drupal Searching
  2. 2. (INSERT PICTURE OF BARCELONA) (maybe Gaudi House on Catalunya) By Doug Green [email_address] [email_address] An Update on Drupal Searching
  3. 3. <ul><li>Search in General </li></ul><ul><li>Indexing </li></ul><ul><li>Searching – in this talk </li></ul><ul><li>User Interface – in this talk </li></ul>An Update on Drupal Searching
  4. 4. <ul><li>Overview of this Talk </li></ul>An Update on Drupal Searching <ul><li>Start with the easy & fun stuff </li></ul><ul><ul><li>Views based UI improvements </li></ul></ul><ul><li>How does Core Search work </li></ul><ul><li>How does Core Search SQL work </li></ul><ul><li>Three patches to improve Core Search SQL </li></ul><ul><li>VFS proof of concept </li></ul><ul><li>Other Search Options – not in this talk </li></ul><ul><ul><li>SoC Fuzzy Search </li></ul></ul><ul><ul><li>Semantec Search, Faceted Search </li></ul></ul>
  5. 5. <ul><li>Views based searching </li></ul>An Update on Drupal Searching <ul><li>Presented at OS/CMS </li></ul><ul><li>modules - VFB, VFS, daterange </li></ul><ul><li>demos </li></ul><ul><ul><li>filter block </li></ul></ul><ul><ul><li>override search box </li></ul></ul><ul><ul><li>views search plugin </li></ul></ul><ul><li>d.o #130714 </li></ul>
  6. 6. <ul><li>Core Search Overview </li></ul><ul><li>Need to understand to talk about </li></ul><ul><ul><li>performance and link referencing </li></ul></ul><ul><li>indexing </li></ul><ul><li>UI </li></ul><ul><li>node searches / user searches </li></ul><ul><li>extending with Search Implementors </li></ul><ul><li>credit </li></ul>An Update on Drupal Searching
  7. 7. <ul><li>Search Node Ranking </li></ul><ul><li>Keyword Relevance / Node Linking </li></ul><ul><li>Recently Posted (newness) </li></ul><ul><li>Number of Comments </li></ul>An Update on Drupal Searching <ul><li>d.o #146466 </li></ul>
  8. 8. <ul><li>Introduction to Queries </li></ul><ul><li>AND </li></ul><ul><li>OR </li></ul><ul><li>Exclude </li></ul><ul><li>Phrase </li></ul><ul><li>Advanced Tab </li></ul>An Update on Drupal Searching <ul><ul><li>dogs cats </li></ul></ul><ul><ul><li>dogs OR cat </li></ul></ul><ul><ul><li>dogs or cats </li></ul></ul><ul><ul><li>dogs -cats </li></ul></ul><ul><ul><li>“ sheep dog” </li></ul></ul><ul><ul><li>type:forum </li></ul></ul>
  9. 9. <ul><li>AND SQL </li></ul><ul><li>SELECT sid from {search_index} </li></ul><ul><ul><li>WHERE (word = 'cat' OR word = 'dog') </li></ul></ul><ul><ul><li>GROUP BY sid HAVING COUNT(*) >= 2 </li></ul></ul>An Update on Drupal Searching <ul><li>SELECT sid from {search_dataset} </li></ul><ul><ul><li>WHERE (data LIKE '% cat %' </li></ul></ul><ul><ul><li>AND data LIKE '% dog %') </li></ul></ul><ul><li>Why >= and why the second query? </li></ul>
  10. 10. <ul><li>OR SQL </li></ul><ul><li>SELECT sid from {search_index} </li></ul><ul><ul><li>WHERE (word = 'cat' OR word = 'dog') </li></ul></ul><ul><ul><li>GROUP BY sid HAVING COUNT(*) >= 1 </li></ul></ul>An Update on Drupal Searching <ul><li>SELECT sid from {search_dataset} </li></ul><ul><ul><li>WHERE (data LIKE '% cat %' </li></ul></ul><ul><ul><li>OR data LIKE '% dog %') </li></ul></ul><ul><li>Why the second query? </li></ul>
  11. 11. <ul><li>Exclude SQL </li></ul><ul><li>same as previous (AND or OR depending) </li></ul>An Update on Drupal Searching <ul><li>SELECT sid from {search_dataset} </li></ul><ul><ul><li>WHERE (data LIKE '% cat %' </li></ul></ul><ul><ul><li>AND data NOT LIKE '% dog %') </li></ul></ul><ul><li>Why the second query? </li></ul><ul><ul><li>Mysql 3 doesn't support Subqueries </li></ul></ul><ul><li>d.o #143888 </li></ul>
  12. 12. <ul><li>AND: SELECT sid from {search_index} </li></ul><ul><ul><li>WHERE (word = 'cat' OR word = 'dog') </li></ul></ul><ul><ul><li>GROUP BY sid HAVING COUNT(*) = 2 </li></ul></ul><ul><li>OR: SELECT sid from {search_index} </li></ul><ul><ul><li>WHERE (word = 'cat' OR word = 'dog') </li></ul></ul><ul><ul><li>GROUP BY sid </li></ul></ul><ul><li>One Solution – Unique Index </li></ul>An Update on Drupal Searching <ul><li>d.o #143160 </li></ul>
  13. 13. <ul><li>Exclude: </li></ul><ul><ul><li>SELECT ... WHERE NOT IN (...) </li></ul></ul><ul><li>Yes, this is kinda slow </li></ul><ul><li>But, I bet 99% of users never use it </li></ul><ul><li>And, all remaining queries aren't </li></ul><ul><ul><li>penalized for something hardly used </li></ul></ul><ul><li>Second Solution – Subqueries </li></ul>An Update on Drupal Searching <ul><li>d.o #151910 and #143888 (views) </li></ul>
  14. 14. <ul><li>Necessary to {search_index} AND queries </li></ul><ul><li>Drastically smaller {search_index} table </li></ul><ul><li>Added benefit {search_node_links} </li></ul><ul><li>Third Solution – Node Link Tracker </li></ul>An Update on Drupal Searching <ul><li>d.o #146466 </li></ul>
  15. 15. <ul><li>views_fastsearch </li></ul><ul><li>Includes All of above </li></ul><ul><li>Plus Views Argument handler for links </li></ul><ul><li>My Playground - VFS </li></ul>An Update on Drupal Searching <ul><li>d.o/project/views_fastsearch </li></ul>
  16. 16. <ul><li>http://www.civicactions.com/blog/search </li></ul><ul><li>d.o #146466 </li></ul><ul><li>d.o #143888 </li></ul><ul><li>d.o #151910 </li></ul><ul><li>d.o #143160 </li></ul><ul><li>d.o #146466 </li></ul><ul><li>g.d.o #4102 (Search group) </li></ul><ul><li>More References </li></ul>An Update on Drupal Searching
  17. 17. [email_address] views_fastsearch An Update on Drupal Searching

×