525: def query_update(query, new_val)
526: @dir.synchrolock do
527: ensure_writer_open()
528: ensure_searcher_open()
529: docs_to_add = []
530: query = do_process_query(query)
531: @searcher.search_each(query) do |id, score|
532: document = @searcher[id].load
533: if new_val.is_a?(Hash)
534: document.merge!(new_val)
535: else new_val.is_a?(String) or new_val.is_a?(Symbol)
536: document[@default_input_field] = new_val.to_s
537: end
538: docs_to_add << document
539: @reader.delete(id)
540: end
541: ensure_writer_open()
542: docs_to_add.each {|doc| @writer << doc }
543: flush() if @auto_flush
544: end
545: end