 
   When *with-stemmed* is true, the iteratior item is the following:
   [stemmed-word [start-offset end-offset]]"
-  (let [phrases (into #{} (filter #(.contains % " ") dict))
+  (let [phrases (into #{} (filter #(or (.contains % " ")
+                                       (.contains % "-")) dict))
         words (clojure.set/difference dict phrases)
-        search-words (stemming-dict words)
-        search-phrases (stemming-phrases phrases)
+        search-words (clojure.set/union (stemming-dict words) words)
+        search-phrases (clojure.set/union (stemming-phrases phrases)
+                                          (map #(.split % "[ -]") phrases))
         br-words (map #(BytesRef. %) search-words)
         br-phrases (map (fn [phrase] (map #(BytesRef. %) phrase)) search-phrases)
         iwords (into #{} br-words)

                   (doall
                    (map #(stemming-word %)
                         phrase-words)))
                 (map #(.split % " ") dict-phrases-set))))

(defn get-positions [^TermsEnum te & {:keys [get-term
                                             get-freq

  When *with-stemmed* is true return [[matched-text stemmed-text beg]... ],
  assume first argument has [[stemmed-word [start-offset end-offset]]... ]
  structure."
  (let [get-first (if *with-stemmed*
                    (fn [x] (-> x second first))
                    (fn [x] (first x)))
        positions (sort-by get-first positions)]
    (cond
      ;; ---
      (string? text-data)
