docs: def tokenize(string):
      """
      Split the input several times, returning intermediate results at each level:
      - delimited by underscores
      - letter/number boundaries
      - word segments
      E.g., tokenize('landuse_austin_tx_24dates') ->
          ['landuse', 'land', 'use', 'austin', 'tx', '24dates', '24', 'dates']
  
      (Don't need a token for the original string because to_tsvector splits on underscores.)
      """
      if not wordsegment.BIGRAMS:
          # Should only happen in dev.
          wordsegment.load()
  
      lvl1_parts = string.split('_')
      for lvl1 in lvl1_parts:
          lvl2_parts = ALPHA_NUM_RE.findall(lvl1)
          if len(lvl2_parts) > 1:
              yield lvl1
          for lvl2 in lvl2_parts:
              lvl3_parts = wordsegment.segment(lvl2)
              if len(lvl3_parts) > 1:
                  yield lvl2
              yield from lvl3_parts