 
   When *with-stemmed* is true, the iteratior item is the following:
   [stemmed-word [start-offset end-offset]]"
-  (let [phrases (into #{} (filter #(or (.contains % " ")
-                                       (.contains % "-")) dict))
+  (let [phrase-sep-pattern (re-pattern *phrase-separator-regex*)
+        phrases (into #{} (filter #(re-find phrase-sep-pattern %)
+                                  dict))
         words (clojure.set/difference dict phrases)
-        search-words (clojure.set/union (stemming-dict words) words)
-        search-phrases (clojure.set/union (stemming-phrases phrases)
-                                          (map #(.split % "[ -]") phrases))
+        search-words (stemming-dict words)
+        search-phrases (stemming-phrases 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

                                                      ps))
                                               ps)))
                                         (term-iter))
                                    ;; Iterate through dictionary words
                                    (map (fn [br-word word]
                                           (if (.seekExact te br-word)
                                             (if with-stemmed
