текст внутри колореровского контейнера “тянется” под следующие посты в ридере… с чего бы это?
]]>This is my port of BuildKeywords Sphinx function from sphinxapi.php. Maybe you find it interesting and include it in future versions of your plugin.
—-
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 | # = sphinx_ex.rb - extend Sphinx Client API by Dmytro Shteflyuk # # Author:: Leonid S. Pavlov <mailto:leonid.pavlov at gmail dot com>. # Copyright:: Copyright (c) 2008 Leonid S. Pavlov # License:: Distributes under the same terms as Ruby module Sphinx class Client SEARCHD_COMMAND_KEYWORDS = 3 VER_COMMAND_KEYWORDS = 0x100 # Keywords generation # # Connect to searchd server, and generate keyword list for a given query. # # * <tt>query</tt> is query string # * <tt>index</tt> is index name (or names) to query # * <tt>hits</tt> is the bool flag for counting words hits in indexed documents # # Returns an array of words on success. # Returns false on failure. # # Usage example: # sphinx.BuildKeywords('test1', '*', true) # def BuildKeywords(query, index, hits) assert { query.instance_of? String } assert { index.instance_of? String } assert { hits.instance_of?(TrueClass) || hits.instance_of?(FalseClass) } sock = self.Connect # build request request = Request.new # v.1.0 req request.put_string query # req query request.put_string index # req index request.put_int hits ? 1 : 0 # req hits # send query, get response len = request.to_s.length request = [SEARCHD_COMMAND_KEYWORDS, VER_COMMAND_KEYWORDS, len].pack('nnN') + request.to_s # add header sock.send(request, 0) response = GetResponse(sock, VER_COMMAND_KEYWORDS) # parse response pos = 0 res = [] rlen = response.length nwords = response[pos, 4].unpack('N*').first pos += 4 for i in 0...nwords do len = response[pos, 4].unpack('N*').first; pos += 4 tokenized = response[pos, len] pos += len; len = response[pos, 4].unpack('N*').first; pos += 4 normalized = response[pos, len] pos += len; res << { 'tokenized' => tokenized, 'normalized' => normalized } if (hits) ndocs, nhits = response[pos, 8].unpack('N*N*') pos += 8 res[i].merge!('docs' => ndocs, 'hits' => nhits) end if pos > rlen @error = 'incomplete reply' raise SphinxResponseError, @error end end return res end end end |