diff --git a/lib/mongoid_sphinx/mongoid/sphinx.rb b/lib/mongoid_sphinx/mongoid/sphinx.rb index 0b78527..b52aae0 100644 --- a/lib/mongoid_sphinx/mongoid/sphinx.rb +++ b/lib/mongoid_sphinx/mongoid/sphinx.rb @@ -1,5 +1,3 @@ -require 'digest' - module Mongoid module Sphinx extend ActiveSupport::Concern @@ -94,7 +92,7 @@ def generate_stream xml << "" end xml << '' - xml << '' + xml << '' search_attributes.each do |key, value| xml << "" end @@ -159,7 +157,6 @@ def get_fields(document) # override this method to process embedded ids def search(query, options = {}) ids = MongoidSphinx::search(query, options.merge(:class => self)) - # ids = ids.reject{ |id| id.class_name!=self.to_s } ids = ids.map(&:sphinx_id) if embedded? ids diff --git a/lib/mongoid_sphinx/search.rb b/lib/mongoid_sphinx/search.rb index 87b8de9..d29eb3b 100644 --- a/lib/mongoid_sphinx/search.rb +++ b/lib/mongoid_sphinx/search.rb @@ -1,3 +1,4 @@ +require 'zlib' require 'ostruct' module MongoidSphinx @@ -29,7 +30,7 @@ def self.default_client(options={}) end def self.class_filter(klass) - Digest::MD5.hexdigest(klass.to_s)[0...16].hex + Zlib::crc32(klass.to_s) & 0xffffffff end def self.search(query, options = {}) @@ -57,8 +58,7 @@ def self.search_ids(id_range, options = {}) client.match_mode = :extended client.limit = options[:limit] if options.key?(:limit) client.max_matches = options[:max_matches] if options.key?(:max_matches) - # TODO: I cant get this to work, always returns no results - # client.filters << Riddle::Client::Filter.new('class_name', options[:class].name.to_a, false) if options.key?(:class) + client.filters << Riddle::Client::Filter.new('class_filter', [class_filter(options[:class])], false) if options.key?(:class) results = client.query('*') process_results(results)