lib/chatterbot/search.rb in chatterbot-2.0.4 vs lib/chatterbot/search.rb in chatterbot-2.0.5
- old
+ new
@@ -22,35 +22,58 @@
#
def include_retweets
@skip_retweets = false
end
-
+
#
# check if this is a retweet that we want to skip
#
def skippable_retweet?(t)
@skip_retweets && t.retweeted_status?
end
+
+ def wrap_search_query(q)
+ if q =~ / /
+ ['"', q.gsub(/^"/, '').gsub(/"$/, ''), '"'].join("")
+ else
+ q
+ end
+ end
# internal search code
def search(queries, opts = {}, &block)
debug "check for tweets since #{since_id}"
max_tweets = opts.delete(:limit) || MAX_SEARCH_TWEETS
+ exact_match = if opts.key?(:exact)
+ opts.delete(:exact)
+ else
+ true
+ end
+
if queries.is_a?(String)
- queries = [queries]
+ queries = [
+ queries
+ ]
end
- query = queries.join(" OR ")
+ query = queries.map { |q|
+ if exact_match == true
+ q = wrap_search_query(q)
+ end
+
+ q
+ }.join(" OR ")
#
# search twitter
#
debug "search: #{query} #{default_opts.merge(opts)}"
@current_tweet = nil
+
client.search( query, default_opts.merge(opts) ).take(max_tweets).each { |s|
update_since_id(s)
debug s.text
if block_given? && valid_tweet?(s)