title: SQL search for words in any order
body: <p>Given this mockup:</p>
  
  <pre><code>+-----------+-------------+---------------------------+
  |  item_id  |  item_name  |  desc                     |
  +-----------+-------------+---------------------------+
  |  1        |  Product 1  |  lorem ipsum dolor...     |
  |  2        |  Product 2  |  lorem mauris eu...       |
  |  3        |  Product 3  |  scelerisque sagittis...  |
  |  4        |  Product 4  |  lorem dolor ipsum...     |
  |  5        |  Product 5  |  ipsum dolor lorem...     |
  +-----------+-------------+---------------------------+
  </code></pre>
  
  <p>And I want to search all of the products that contain the words <code>lorem ipsum</code> in either <code>item_name</code> or <code>desc</code>. Additionally, any words can appear between <code>lorem</code> and <code>ipsum</code>, and <code>lorem</code> and <code>ipsum</code> can appear in any order. Basically, this search would return items <code>1</code>, <code>4</code>, and <code>5</code></p>
  
  <p>Now, I know I could accomplish this with:</p>
  
  <pre><code>SELECT * FROM items
  WHERE (item_name LIKE 'lorem%ipsum'
         OR desc LIKE 'lorem%ipsum')
  OR (item_name LIKE 'ipsum%lorem'
      OR desc LIKE 'ipsum%lorem')
  </code></pre>
  
  <p>But if my search term is longer (ie. lorem ipsum dolor sit amet, consectetur adipiscing elit), I feel like it could become a bit ridiculous with the number of <code>OR</code> added to the query. Is there an easier/more efficient way to handle this?</p>