Search sold edition,rake sunspot:solr:run. NewsBulletin.solr_search,NewsBulletin.solr_reindex. Not working
This commit is contained in:
		
							parent
							
								
									8dd1ab32c1
								
							
						
					
					
						commit
						cb17fe0825
					
				
							
								
								
									
										7
									
								
								Gemfile
								
								
								
								
							
							
						
						
									
										7
									
								
								Gemfile
								
								
								
								
							| 
						 | 
				
			
			@ -26,7 +26,7 @@ gem 'rake'
 | 
			
		|||
gem 'resque' # background jobs
 | 
			
		||||
gem 'resque-scheduler' # job scheduling
 | 
			
		||||
gem 'resque-restriction'
 | 
			
		||||
gem 'rb-readline'
 | 
			
		||||
#gem 'rb-readline'
 | 
			
		||||
gem 'ruby-debug19'
 | 
			
		||||
gem 'rubyzip'
 | 
			
		||||
gem 'therubyracer'
 | 
			
		||||
| 
						 | 
				
			
			@ -37,6 +37,10 @@ gem 'therubyracer' if RUBY_PLATFORM.downcase.include?("linux")
 | 
			
		|||
 | 
			
		||||
gem "impressionist", :require => "impressionist", :path => "vendor/impressionist"
 | 
			
		||||
 | 
			
		||||
# gem "tire"
 | 
			
		||||
gem 'sunspot_rails',  "~> 1.3.2"
 | 
			
		||||
gem 'sunspot_solr'
 | 
			
		||||
 | 
			
		||||
# Gems used only for assets and not required
 | 
			
		||||
# in production environments by default.
 | 
			
		||||
group :assets do
 | 
			
		||||
| 
						 | 
				
			
			@ -47,6 +51,7 @@ end
 | 
			
		|||
 | 
			
		||||
 | 
			
		||||
group :test, :development do
 | 
			
		||||
  gem "sunspot-rails-tester"
 | 
			
		||||
  gem 'spork'
 | 
			
		||||
  gem 'database_cleaner'  #Strategies for cleaning databases. Can be used to ensure a clean state for testing.
 | 
			
		||||
  gem "rspec", "~> 2.0"
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
							
								
								
									
										17
									
								
								Gemfile.lock
								
								
								
								
							
							
						
						
									
										17
									
								
								Gemfile.lock
								
								
								
								
							| 
						 | 
				
			
			@ -140,6 +140,7 @@ GEM
 | 
			
		|||
      color (>= 1.4.0)
 | 
			
		||||
      transaction-simple (~> 1.3)
 | 
			
		||||
    polyglot (0.3.3)
 | 
			
		||||
    pr_geohash (1.0.0)
 | 
			
		||||
    rack (1.3.6)
 | 
			
		||||
    rack-cache (1.2)
 | 
			
		||||
      rack (>= 0.4)
 | 
			
		||||
| 
						 | 
				
			
			@ -168,7 +169,6 @@ GEM
 | 
			
		|||
      rdoc (~> 3.4)
 | 
			
		||||
      thor (~> 0.14.6)
 | 
			
		||||
    rake (0.9.2.2)
 | 
			
		||||
    rb-readline (0.4.2)
 | 
			
		||||
    rdoc (3.12)
 | 
			
		||||
      json (~> 1.4)
 | 
			
		||||
    redis (2.2.2)
 | 
			
		||||
| 
						 | 
				
			
			@ -185,6 +185,8 @@ GEM
 | 
			
		|||
      redis (>= 2.0.1)
 | 
			
		||||
      resque (>= 1.8.0)
 | 
			
		||||
      rufus-scheduler
 | 
			
		||||
    rsolr (1.0.8)
 | 
			
		||||
      builder (>= 2.1.2)
 | 
			
		||||
    rspec (2.8.0)
 | 
			
		||||
      rspec-core (~> 2.8.0)
 | 
			
		||||
      rspec-expectations (~> 2.8.0)
 | 
			
		||||
| 
						 | 
				
			
			@ -243,6 +245,15 @@ GEM
 | 
			
		|||
      rack (~> 1.0)
 | 
			
		||||
      tilt (~> 1.1, != 1.3.0)
 | 
			
		||||
    subexec (0.2.1)
 | 
			
		||||
    sunspot (1.3.3)
 | 
			
		||||
      pr_geohash (~> 1.0)
 | 
			
		||||
      rsolr (~> 1.0.7)
 | 
			
		||||
    sunspot-rails-tester (0.0.4)
 | 
			
		||||
      sunspot_rails (~> 1.2)
 | 
			
		||||
    sunspot_rails (1.3.3)
 | 
			
		||||
      nokogiri
 | 
			
		||||
      sunspot (= 1.3.3)
 | 
			
		||||
    sunspot_solr (1.3.3)
 | 
			
		||||
    therubyracer (0.9.9)
 | 
			
		||||
      libv8 (~> 3.3.10)
 | 
			
		||||
    thor (0.14.6)
 | 
			
		||||
| 
						 | 
				
			
			@ -302,7 +313,6 @@ DEPENDENCIES
 | 
			
		|||
  radius
 | 
			
		||||
  rails (>= 3.1.0, < 3.2.0)
 | 
			
		||||
  rake
 | 
			
		||||
  rb-readline
 | 
			
		||||
  resque
 | 
			
		||||
  resque-restriction
 | 
			
		||||
  resque-scheduler
 | 
			
		||||
| 
						 | 
				
			
			@ -316,6 +326,9 @@ DEPENDENCIES
 | 
			
		|||
  sinatra
 | 
			
		||||
  spork
 | 
			
		||||
  sprockets
 | 
			
		||||
  sunspot-rails-tester
 | 
			
		||||
  sunspot_rails (~> 1.3.2)
 | 
			
		||||
  sunspot_solr
 | 
			
		||||
  therubyracer
 | 
			
		||||
  tinymce-rails
 | 
			
		||||
  uglifier
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -39,7 +39,9 @@ class PagesController < ApplicationController
 | 
			
		|||
      options << "?page_main=#{params[:page_main]}" unless params[:page_main].blank?
 | 
			
		||||
      options << "#{options.blank? ? '?' : '&'}category_id=#{params[:category_id]}" unless params[:category_id].blank?
 | 
			
		||||
      options << "#{options.blank? ? '?' : '&'}tag_id=#{params[:tag_id]}" unless params[:tag_id].blank?
 | 
			
		||||
      redirect_to url + options
 | 
			
		||||
      options << "#{options.blank? ? '?' : '&'}search_query=#{params[:search_query]}" unless params[:search_query].blank?
 | 
			
		||||
      uri = URI::escape(url + options)
 | 
			
		||||
      redirect_to uri
 | 
			
		||||
   end
 | 
			
		||||
   
 | 
			
		||||
   def show_from_link
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -2,11 +2,12 @@ class BackupServer
 | 
			
		|||
  @queue = :high
 | 
			
		||||
 | 
			
		||||
  def self.perform()
 | 
			
		||||
    CronMail.time_check("Going to backup Orbit").deliver
 | 
			
		||||
    #CronMail.time_check("Going to backup Orbit").deliver
 | 
			
		||||
    dbhost = Mongoid.config.database.connection.primary.join ':'
 | 
			
		||||
    dbname = Mongoid.config.database.name
 | 
			
		||||
    dbdirectory = "#{Rails.root}/tmp/#{dbname}-"+Time.now.strftime("%Y-%m-%d-%H-%M")
 | 
			
		||||
    %x[mongodump -h dbhost -d dbname -o dbdirectory ]
 | 
			
		||||
    %x[mongodump -h #{dbhost} -d #{dbname} -o #{dbdirectory} ]
 | 
			
		||||
 | 
			
		||||
    # %x[touch  #{Rails.root}/tmp/restart]
 | 
			
		||||
  end
 | 
			
		||||
end
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -21,6 +21,8 @@ attr_writer :transition_sec
 | 
			
		|||
  APP_NAME = 'ad_banners'
 | 
			
		||||
  ObjectAuthTitlesOptions = %W{edit}
 | 
			
		||||
  
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
  def pp_object
 | 
			
		||||
    title
 | 
			
		||||
  end
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -0,0 +1,46 @@
 | 
			
		|||
# coding: utf-8
 | 
			
		||||
# 基本 Model,加入一些通用功能
 | 
			
		||||
module Mongoid
 | 
			
		||||
  module BaseModel
 | 
			
		||||
    extend ActiveSupport::Concern
 | 
			
		||||
 | 
			
		||||
    included do
 | 
			
		||||
      scope :recent, desc(:_id)
 | 
			
		||||
      scope :exclude_ids, Proc.new { |ids| where(:_id.nin => ids.map(&:to_i)) }
 | 
			
		||||
      scope :by_week, where(:created_at.gte => 7.days.ago.utc)
 | 
			
		||||
    end
 | 
			
		||||
 | 
			
		||||
    module ClassMethods
 | 
			
		||||
      # like ActiveRecord find_by_id
 | 
			
		||||
      def find_by_id(id)
 | 
			
		||||
        if id.is_a?(Integer) or id.is_a?(String)
 | 
			
		||||
          where(:_id => id.to_i).first
 | 
			
		||||
        else
 | 
			
		||||
          nil
 | 
			
		||||
        end
 | 
			
		||||
      end
 | 
			
		||||
 | 
			
		||||
      def find_in_batches(opts = {})
 | 
			
		||||
        batch_size = opts[:batch_size] || 1000
 | 
			
		||||
        start = opts.delete(:start).to_i || 0
 | 
			
		||||
        objects = self.limit(batch_size).skip(start)
 | 
			
		||||
        t = Time.new
 | 
			
		||||
        while objects.any?
 | 
			
		||||
          yield objects
 | 
			
		||||
          start += batch_size
 | 
			
		||||
          # Rails.logger.debug("processed #{start} records in #{Time.new - t} seconds") if Rails.logger.debug?
 | 
			
		||||
          break if objects.size < batch_size
 | 
			
		||||
          objects = self.limit(batch_size).skip(start)
 | 
			
		||||
        end
 | 
			
		||||
      end
 | 
			
		||||
 | 
			
		||||
      def delay
 | 
			
		||||
        Sidekiq::Extensions::Proxy.new(DelayedDocument, self)
 | 
			
		||||
      end
 | 
			
		||||
    end
 | 
			
		||||
 | 
			
		||||
    def delay
 | 
			
		||||
      Sidekiq::Extensions::Proxy.new(DelayedDocument, self)
 | 
			
		||||
    end
 | 
			
		||||
  end
 | 
			
		||||
end
 | 
			
		||||
| 
						 | 
				
			
			@ -0,0 +1,46 @@
 | 
			
		|||
# coding: utf-8
 | 
			
		||||
# this is from : https://github.com/jugyo/sunspot_mongoid
 | 
			
		||||
# this file is special for mongoid_auto_increment_id
 | 
			
		||||
require 'sunspot'
 | 
			
		||||
require 'mongoid'
 | 
			
		||||
require 'sunspot/rails'
 | 
			
		||||
 | 
			
		||||
# == Examples:
 | 
			
		||||
#
 | 
			
		||||
# class Post
 | 
			
		||||
#   include Mongoid::Document
 | 
			
		||||
#   field :title
 | 
			
		||||
#
 | 
			
		||||
#   include Sunspot::Mongoid
 | 
			
		||||
#   searchable do
 | 
			
		||||
#     text :title
 | 
			
		||||
#   end
 | 
			
		||||
# end
 | 
			
		||||
#
 | 
			
		||||
module Sunspot
 | 
			
		||||
  module Mongoid
 | 
			
		||||
    def self.included(base)
 | 
			
		||||
      base.class_eval do
 | 
			
		||||
        extend Sunspot::Rails::Searchable::ActsAsMethods
 | 
			
		||||
        Sunspot::Adapters::DataAccessor.register(DataAccessor, base)
 | 
			
		||||
        Sunspot::Adapters::InstanceAdapter.register(InstanceAdapter, base)
 | 
			
		||||
      end
 | 
			
		||||
    end
 | 
			
		||||
 | 
			
		||||
    class InstanceAdapter < Sunspot::Adapters::InstanceAdapter
 | 
			
		||||
      def id
 | 
			
		||||
        @instance.id
 | 
			
		||||
      end
 | 
			
		||||
    end
 | 
			
		||||
 | 
			
		||||
    class DataAccessor < Sunspot::Adapters::DataAccessor
 | 
			
		||||
      def load(id)
 | 
			
		||||
        @clazz.where(:_id => id).first
 | 
			
		||||
      end
 | 
			
		||||
 | 
			
		||||
      def load_all(ids)
 | 
			
		||||
        @clazz.where(:_id.in => ids.collect { |id| id.to_i })
 | 
			
		||||
      end
 | 
			
		||||
    end
 | 
			
		||||
  end
 | 
			
		||||
end
 | 
			
		||||
| 
						 | 
				
			
			@ -0,0 +1,17 @@
 | 
			
		|||
production:
 | 
			
		||||
  solr:
 | 
			
		||||
    hostname: localhost
 | 
			
		||||
    port: 8983
 | 
			
		||||
    log_level: WARNING
 | 
			
		||||
 | 
			
		||||
development:
 | 
			
		||||
  solr:
 | 
			
		||||
    hostname: localhost
 | 
			
		||||
    port: 8983
 | 
			
		||||
    log_level: INFO
 | 
			
		||||
 | 
			
		||||
test:
 | 
			
		||||
  solr:
 | 
			
		||||
    hostname: localhost
 | 
			
		||||
    port: 8983
 | 
			
		||||
    log_level: WARNING
 | 
			
		||||
| 
						 | 
				
			
			@ -0,0 +1,28 @@
 | 
			
		|||
module  OrbitBasis
 | 
			
		||||
  module BaseModel
 | 
			
		||||
    extend ActiveSupport::Concern
 | 
			
		||||
 | 
			
		||||
    # included do
 | 
			
		||||
    #   scope :recent, desc(:_id)
 | 
			
		||||
    #   scope :exclude_ids, Proc.new { |ids| where(:_id.nin => ids.map(&:to_i)) }
 | 
			
		||||
    #   scope :by_week, where(:created_at.gte => 7.days.ago.utc)
 | 
			
		||||
    # end
 | 
			
		||||
 | 
			
		||||
    module ClassMethods
 | 
			
		||||
 | 
			
		||||
      def find_in_batches(opts = {})
 | 
			
		||||
        batch_size = opts[:batch_size] || 1000
 | 
			
		||||
        start = opts.delete(:start).to_i || 0
 | 
			
		||||
        objects = self.limit(batch_size).skip(start)
 | 
			
		||||
        t = Time.new
 | 
			
		||||
        while objects.any?
 | 
			
		||||
          yield objects
 | 
			
		||||
          start += batch_size
 | 
			
		||||
          # Rails.logger.debug("processed #{start} records in #{Time.new - t} seconds") if Rails.logger.debug?
 | 
			
		||||
          break if objects.size < batch_size
 | 
			
		||||
          objects = self.limit(batch_size).skip(start)
 | 
			
		||||
        end
 | 
			
		||||
      end
 | 
			
		||||
    end
 | 
			
		||||
  end
 | 
			
		||||
end
 | 
			
		||||
| 
						 | 
				
			
			@ -0,0 +1,46 @@
 | 
			
		|||
# coding: utf-8
 | 
			
		||||
# this is from : https://github.com/jugyo/sunspot_mongoid
 | 
			
		||||
# this file is special for mongoid_auto_increment_id
 | 
			
		||||
require 'sunspot'
 | 
			
		||||
require 'mongoid'
 | 
			
		||||
require 'sunspot/rails'
 | 
			
		||||
 | 
			
		||||
# == Examples:
 | 
			
		||||
#
 | 
			
		||||
# class Post
 | 
			
		||||
#   include Mongoid::Document
 | 
			
		||||
#   field :title
 | 
			
		||||
#
 | 
			
		||||
#   include Sunspot::Mongoid
 | 
			
		||||
#   searchable do
 | 
			
		||||
#     text :title
 | 
			
		||||
#   end
 | 
			
		||||
# end
 | 
			
		||||
#
 | 
			
		||||
module OrbitSearchLib
 | 
			
		||||
  module ObjectSearchable
 | 
			
		||||
    def self.included(base)
 | 
			
		||||
      base.class_eval do
 | 
			
		||||
        extend Sunspot::Rails::Searchable::ActsAsMethods
 | 
			
		||||
        Sunspot::Adapters::DataAccessor.register(DataAccessor, base)
 | 
			
		||||
        Sunspot::Adapters::InstanceAdapter.register(InstanceAdapter, base)
 | 
			
		||||
      end
 | 
			
		||||
    end
 | 
			
		||||
 | 
			
		||||
    class InstanceAdapter < Sunspot::Adapters::InstanceAdapter
 | 
			
		||||
      def id
 | 
			
		||||
        @instance.id
 | 
			
		||||
      end
 | 
			
		||||
    end
 | 
			
		||||
 | 
			
		||||
    class DataAccessor < Sunspot::Adapters::DataAccessor
 | 
			
		||||
      def load(id)
 | 
			
		||||
        @clazz.where(:_id => id).first
 | 
			
		||||
      end
 | 
			
		||||
 | 
			
		||||
      def load_all(ids)
 | 
			
		||||
        @clazz.where(:_id.in => ids.collect { |id| id.to_i })
 | 
			
		||||
      end
 | 
			
		||||
    end
 | 
			
		||||
  end
 | 
			
		||||
end
 | 
			
		||||
| 
						 | 
				
			
			@ -171,7 +171,7 @@ module ParserCommon
 | 
			
		|||
      if (content["main"] == "true" && !page.module_app.nil?)
 | 
			
		||||
        ret << "<div id='appfrontend' class='dymanic_load' path='/panel/#{page.module_app.key}/front_end/#{page.app_frontend_url}"
 | 
			
		||||
        ret << "/#{params[:id]}" if params[:id] && !params[:id].eql?(page.id.to_s)
 | 
			
		||||
        ret << "?inner=true&page_id=#{page.id}&category_id=#{category}&tag_id=#{tag}&preview=#{params[:preview]}&page_main=#{params[:page_main]}"
 | 
			
		||||
        ret << "?inner=true&page_id=#{page.id}&category_id=#{category}&tag_id=#{tag}&preview=#{params[:preview]}&page_main=#{params[:page_main]}&search_query=#{params[:search_query]}"
 | 
			
		||||
        ret << "'></div>"
 | 
			
		||||
      else
 | 
			
		||||
        part = page.page_parts.detect{ |p| p.name.to_s == content['name'].to_s } rescue nil
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -0,0 +1,222 @@
 | 
			
		|||
Jun 18, 2012 4:30:20 PM org.apache.solr.core.SolrResourceLoader locateSolrHome
 | 
			
		||||
INFO: JNDI not configured for solr (NoInitialContextEx)
 | 
			
		||||
Jun 18, 2012 4:30:20 PM org.apache.solr.core.SolrResourceLoader locateSolrHome
 | 
			
		||||
INFO: using system property solr.solr.home: /Users/kaito/Documents/MyWorkspeace/NCCU/solr
 | 
			
		||||
Jun 18, 2012 4:30:20 PM org.apache.solr.core.SolrResourceLoader <init>
 | 
			
		||||
INFO: Solr home set to '/Users/kaito/Documents/MyWorkspeace/NCCU/solr/'
 | 
			
		||||
Jun 18, 2012 4:30:20 PM org.apache.solr.servlet.SolrDispatchFilter init
 | 
			
		||||
INFO: SolrDispatchFilter.init()
 | 
			
		||||
Jun 18, 2012 4:30:20 PM org.apache.solr.core.SolrResourceLoader locateSolrHome
 | 
			
		||||
INFO: JNDI not configured for solr (NoInitialContextEx)
 | 
			
		||||
Jun 18, 2012 4:30:20 PM org.apache.solr.core.SolrResourceLoader locateSolrHome
 | 
			
		||||
INFO: using system property solr.solr.home: /Users/kaito/Documents/MyWorkspeace/NCCU/solr
 | 
			
		||||
Jun 18, 2012 4:30:20 PM org.apache.solr.core.CoreContainer$Initializer initialize
 | 
			
		||||
INFO: looking for solr.xml: /Users/kaito/Documents/MyWorkspeace/NCCU/solr/solr.xml
 | 
			
		||||
Jun 18, 2012 4:30:20 PM org.apache.solr.core.SolrResourceLoader <init>
 | 
			
		||||
INFO: Solr home set to '/Users/kaito/Documents/MyWorkspeace/NCCU/solr/'
 | 
			
		||||
Jun 18, 2012 4:30:20 PM org.apache.solr.core.SolrConfig initLibs
 | 
			
		||||
INFO: Adding specified lib dirs to ClassLoader
 | 
			
		||||
Jun 18, 2012 4:30:20 PM org.apache.solr.core.SolrConfig <init>
 | 
			
		||||
INFO: Loaded SolrConfig: solrconfig.xml
 | 
			
		||||
Jun 18, 2012 4:30:20 PM org.apache.solr.core.SolrCore <init>
 | 
			
		||||
INFO: Opening new SolrCore at /Users/kaito/Documents/MyWorkspeace/NCCU/solr/, dataDir=/Users/kaito/Documents/MyWorkspeace/NCCU/solr/data/development/
 | 
			
		||||
Jun 18, 2012 4:30:20 PM org.apache.solr.schema.IndexSchema readSchema
 | 
			
		||||
INFO: Reading Solr Schema
 | 
			
		||||
Jun 18, 2012 4:30:21 PM org.apache.solr.schema.IndexSchema readSchema
 | 
			
		||||
INFO: Schema name=sunspot
 | 
			
		||||
Jun 18, 2012 4:30:21 PM org.apache.solr.util.plugin.AbstractPluginLoader load
 | 
			
		||||
INFO: created string: org.apache.solr.schema.StrField
 | 
			
		||||
Jun 18, 2012 4:30:21 PM org.apache.solr.util.plugin.AbstractPluginLoader load
 | 
			
		||||
INFO: created tdouble: org.apache.solr.schema.TrieDoubleField
 | 
			
		||||
Jun 18, 2012 4:30:21 PM org.apache.solr.util.plugin.AbstractPluginLoader load
 | 
			
		||||
INFO: created rand: org.apache.solr.schema.RandomSortField
 | 
			
		||||
Jun 18, 2012 4:30:21 PM org.apache.solr.util.plugin.AbstractPluginLoader load
 | 
			
		||||
INFO: created null: org.apache.solr.analysis.StandardTokenizerFactory
 | 
			
		||||
Jun 18, 2012 4:30:21 PM org.apache.solr.util.plugin.AbstractPluginLoader load
 | 
			
		||||
INFO: created null: org.apache.solr.analysis.StandardFilterFactory
 | 
			
		||||
Jun 18, 2012 4:30:21 PM org.apache.solr.util.plugin.AbstractPluginLoader load
 | 
			
		||||
INFO: created null: org.apache.solr.analysis.LowerCaseFilterFactory
 | 
			
		||||
Jun 18, 2012 4:30:21 PM org.apache.solr.util.plugin.AbstractPluginLoader load
 | 
			
		||||
INFO: created text: org.apache.solr.schema.TextField
 | 
			
		||||
Jun 18, 2012 4:30:21 PM org.apache.solr.util.plugin.AbstractPluginLoader load
 | 
			
		||||
INFO: created boolean: org.apache.solr.schema.BoolField
 | 
			
		||||
Jun 18, 2012 4:30:21 PM org.apache.solr.util.plugin.AbstractPluginLoader load
 | 
			
		||||
INFO: created date: org.apache.solr.schema.DateField
 | 
			
		||||
Jun 18, 2012 4:30:21 PM org.apache.solr.util.plugin.AbstractPluginLoader load
 | 
			
		||||
INFO: created sdouble: org.apache.solr.schema.SortableDoubleField
 | 
			
		||||
Jun 18, 2012 4:30:21 PM org.apache.solr.util.plugin.AbstractPluginLoader load
 | 
			
		||||
INFO: created sfloat: org.apache.solr.schema.SortableFloatField
 | 
			
		||||
Jun 18, 2012 4:30:21 PM org.apache.solr.util.plugin.AbstractPluginLoader load
 | 
			
		||||
INFO: created sint: org.apache.solr.schema.SortableIntField
 | 
			
		||||
Jun 18, 2012 4:30:21 PM org.apache.solr.util.plugin.AbstractPluginLoader load
 | 
			
		||||
INFO: created slong: org.apache.solr.schema.SortableLongField
 | 
			
		||||
Jun 18, 2012 4:30:21 PM org.apache.solr.util.plugin.AbstractPluginLoader load
 | 
			
		||||
INFO: created tint: org.apache.solr.schema.TrieIntField
 | 
			
		||||
Jun 18, 2012 4:30:21 PM org.apache.solr.util.plugin.AbstractPluginLoader load
 | 
			
		||||
INFO: created tfloat: org.apache.solr.schema.TrieFloatField
 | 
			
		||||
Jun 18, 2012 4:30:21 PM org.apache.solr.util.plugin.AbstractPluginLoader load
 | 
			
		||||
INFO: created tdate: org.apache.solr.schema.TrieDateField
 | 
			
		||||
Jun 18, 2012 4:30:21 PM org.apache.solr.schema.IndexSchema readSchema
 | 
			
		||||
INFO: default search field is text
 | 
			
		||||
Jun 18, 2012 4:30:21 PM org.apache.solr.schema.IndexSchema readSchema
 | 
			
		||||
INFO: query parser default operator is AND
 | 
			
		||||
Jun 18, 2012 4:30:21 PM org.apache.solr.schema.IndexSchema readSchema
 | 
			
		||||
INFO: unique key field: id
 | 
			
		||||
Jun 18, 2012 4:30:21 PM org.apache.solr.core.JmxMonitoredMap <init>
 | 
			
		||||
INFO: No JMX servers found, not exposing Solr information with JMX.
 | 
			
		||||
Jun 18, 2012 4:30:21 PM org.apache.solr.core.SolrCore initListeners
 | 
			
		||||
INFO: Added SolrEventListener: org.apache.solr.core.QuerySenderListener{queries=[]}
 | 
			
		||||
Jun 18, 2012 4:30:21 PM org.apache.solr.core.SolrCore initListeners
 | 
			
		||||
INFO: Added SolrEventListener: org.apache.solr.core.QuerySenderListener{queries=[{q=solr rocks,start=0,rows=10}, {q=static firstSearcher warming query from solrconfig.xml}]}
 | 
			
		||||
Jun 18, 2012 4:30:21 PM org.apache.solr.request.XSLTResponseWriter init
 | 
			
		||||
INFO: xsltCacheLifetimeSeconds=5
 | 
			
		||||
Jun 18, 2012 4:30:21 PM org.apache.solr.core.RequestHandlers initHandlersFromConfig
 | 
			
		||||
INFO: created standard: solr.SearchHandler
 | 
			
		||||
Jun 18, 2012 4:30:21 PM org.apache.solr.core.RequestHandlers initHandlersFromConfig
 | 
			
		||||
INFO: created dismax: solr.SearchHandler
 | 
			
		||||
Jun 18, 2012 4:30:21 PM org.apache.solr.core.RequestHandlers initHandlersFromConfig
 | 
			
		||||
INFO: created partitioned: solr.SearchHandler
 | 
			
		||||
Jun 18, 2012 4:30:21 PM org.apache.solr.core.RequestHandlers initHandlersFromConfig
 | 
			
		||||
INFO: created /spell: solr.SearchHandler
 | 
			
		||||
Jun 18, 2012 4:30:21 PM org.apache.solr.core.RequestHandlers initHandlersFromConfig
 | 
			
		||||
INFO: created tvrh: org.apache.solr.handler.component.SearchHandler
 | 
			
		||||
Jun 18, 2012 4:30:21 PM org.apache.solr.core.RequestHandlers initHandlersFromConfig
 | 
			
		||||
INFO: adding lazy requestHandler: org.apache.solr.handler.extraction.ExtractingRequestHandler
 | 
			
		||||
Jun 18, 2012 4:30:21 PM org.apache.solr.core.RequestHandlers initHandlersFromConfig
 | 
			
		||||
INFO: created /update/extract: org.apache.solr.handler.extraction.ExtractingRequestHandler
 | 
			
		||||
Jun 18, 2012 4:30:21 PM org.apache.solr.core.RequestHandlers initHandlersFromConfig
 | 
			
		||||
INFO: created /terms: org.apache.solr.handler.component.SearchHandler
 | 
			
		||||
Jun 18, 2012 4:30:21 PM org.apache.solr.core.RequestHandlers initHandlersFromConfig
 | 
			
		||||
INFO: adding lazy requestHandler: solr.SearchHandler
 | 
			
		||||
Jun 18, 2012 4:30:21 PM org.apache.solr.core.RequestHandlers initHandlersFromConfig
 | 
			
		||||
INFO: created /elevate: solr.SearchHandler
 | 
			
		||||
Jun 18, 2012 4:30:21 PM org.apache.solr.core.RequestHandlers initHandlersFromConfig
 | 
			
		||||
INFO: created /update: solr.XmlUpdateRequestHandler
 | 
			
		||||
Jun 18, 2012 4:30:21 PM org.apache.solr.core.RequestHandlers initHandlersFromConfig
 | 
			
		||||
INFO: created /update/javabin: solr.BinaryUpdateRequestHandler
 | 
			
		||||
Jun 18, 2012 4:30:21 PM org.apache.solr.core.RequestHandlers initHandlersFromConfig
 | 
			
		||||
INFO: created /analysis/document: solr.DocumentAnalysisRequestHandler
 | 
			
		||||
Jun 18, 2012 4:30:21 PM org.apache.solr.core.RequestHandlers initHandlersFromConfig
 | 
			
		||||
INFO: created /analysis/field: solr.FieldAnalysisRequestHandler
 | 
			
		||||
Jun 18, 2012 4:30:21 PM org.apache.solr.core.RequestHandlers initHandlersFromConfig
 | 
			
		||||
INFO: adding lazy requestHandler: solr.CSVRequestHandler
 | 
			
		||||
Jun 18, 2012 4:30:21 PM org.apache.solr.core.RequestHandlers initHandlersFromConfig
 | 
			
		||||
INFO: created /update/csv: solr.CSVRequestHandler
 | 
			
		||||
Jun 18, 2012 4:30:21 PM org.apache.solr.core.RequestHandlers initHandlersFromConfig
 | 
			
		||||
INFO: created /admin/: org.apache.solr.handler.admin.AdminHandlers
 | 
			
		||||
Jun 18, 2012 4:30:21 PM org.apache.solr.core.RequestHandlers initHandlersFromConfig
 | 
			
		||||
INFO: created /admin/ping: PingRequestHandler
 | 
			
		||||
Jun 18, 2012 4:30:21 PM org.apache.solr.core.RequestHandlers initHandlersFromConfig
 | 
			
		||||
INFO: created /debug/dump: solr.DumpRequestHandler
 | 
			
		||||
Jun 18, 2012 4:30:21 PM org.apache.solr.core.RequestHandlers initHandlersFromConfig
 | 
			
		||||
INFO: created /mlt: solr.MoreLikeThisHandler
 | 
			
		||||
Jun 18, 2012 4:30:21 PM org.apache.solr.search.SolrIndexSearcher <init>
 | 
			
		||||
INFO: Opening Searcher@3b5b123b main
 | 
			
		||||
Jun 18, 2012 4:30:21 PM org.apache.solr.update.DirectUpdateHandler2$CommitTracker <init>
 | 
			
		||||
INFO: AutoCommit: disabled
 | 
			
		||||
Jun 18, 2012 4:30:21 PM org.apache.solr.handler.component.SpellCheckComponent inform
 | 
			
		||||
INFO: Initializing spell checkers
 | 
			
		||||
Jun 18, 2012 4:30:21 PM org.apache.solr.spelling.AbstractLuceneSpellChecker init
 | 
			
		||||
INFO: Using WhitespaceAnalzyer for dictionary: default
 | 
			
		||||
Jun 18, 2012 4:30:21 PM org.apache.solr.handler.component.SpellCheckComponent inform
 | 
			
		||||
WARNING: No queryConverter defined, using default converter
 | 
			
		||||
Jun 18, 2012 4:30:21 PM org.apache.solr.handler.component.QueryElevationComponent inform
 | 
			
		||||
INFO: Loading QueryElevation from: /Users/kaito/Documents/MyWorkspeace/NCCU/solr/conf/elevate.xml
 | 
			
		||||
Jun 18, 2012 4:30:21 PM org.apache.solr.handler.component.SearchHandler inform
 | 
			
		||||
INFO: Adding  component:org.apache.solr.handler.component.QueryComponent@7dc21ece
 | 
			
		||||
Jun 18, 2012 4:30:21 PM org.apache.solr.handler.component.SearchHandler inform
 | 
			
		||||
INFO: Adding  component:org.apache.solr.handler.component.FacetComponent@5374a6e2
 | 
			
		||||
Jun 18, 2012 4:30:21 PM org.apache.solr.handler.component.SearchHandler inform
 | 
			
		||||
INFO: Adding  component:org.apache.solr.handler.component.MoreLikeThisComponent@f786a3c
 | 
			
		||||
Jun 18, 2012 4:30:21 PM org.apache.solr.handler.component.SearchHandler inform
 | 
			
		||||
INFO: Adding  component:org.apache.solr.handler.component.HighlightComponent@2a869113
 | 
			
		||||
Jun 18, 2012 4:30:21 PM org.apache.solr.handler.component.SearchHandler inform
 | 
			
		||||
INFO: Adding  component:org.apache.solr.handler.component.StatsComponent@689e8c34
 | 
			
		||||
Jun 18, 2012 4:30:21 PM org.apache.solr.handler.component.SearchHandler inform
 | 
			
		||||
INFO: Adding  debug component:org.apache.solr.handler.component.DebugComponent@106df95
 | 
			
		||||
Jun 18, 2012 4:30:21 PM org.apache.solr.handler.component.SearchHandler inform
 | 
			
		||||
INFO: Adding  component:org.apache.solr.handler.component.QueryComponent@7dc21ece
 | 
			
		||||
Jun 18, 2012 4:30:21 PM org.apache.solr.handler.component.SearchHandler inform
 | 
			
		||||
INFO: Adding  component:org.apache.solr.handler.component.FacetComponent@5374a6e2
 | 
			
		||||
Jun 18, 2012 4:30:21 PM org.apache.solr.handler.component.SearchHandler inform
 | 
			
		||||
INFO: Adding  component:org.apache.solr.handler.component.MoreLikeThisComponent@f786a3c
 | 
			
		||||
Jun 18, 2012 4:30:21 PM org.apache.solr.handler.component.SearchHandler inform
 | 
			
		||||
INFO: Adding  component:org.apache.solr.handler.component.HighlightComponent@2a869113
 | 
			
		||||
Jun 18, 2012 4:30:21 PM org.apache.solr.handler.component.SearchHandler inform
 | 
			
		||||
INFO: Adding  component:org.apache.solr.handler.component.StatsComponent@689e8c34
 | 
			
		||||
Jun 18, 2012 4:30:21 PM org.apache.solr.handler.component.SearchHandler inform
 | 
			
		||||
INFO: Adding  debug component:org.apache.solr.handler.component.DebugComponent@106df95
 | 
			
		||||
Jun 18, 2012 4:30:21 PM org.apache.solr.handler.component.SearchHandler inform
 | 
			
		||||
INFO: Adding  component:org.apache.solr.handler.component.QueryComponent@7dc21ece
 | 
			
		||||
Jun 18, 2012 4:30:21 PM org.apache.solr.handler.component.SearchHandler inform
 | 
			
		||||
INFO: Adding  component:org.apache.solr.handler.component.FacetComponent@5374a6e2
 | 
			
		||||
Jun 18, 2012 4:30:21 PM org.apache.solr.handler.component.SearchHandler inform
 | 
			
		||||
INFO: Adding  component:org.apache.solr.handler.component.MoreLikeThisComponent@f786a3c
 | 
			
		||||
Jun 18, 2012 4:30:21 PM org.apache.solr.handler.component.SearchHandler inform
 | 
			
		||||
INFO: Adding  component:org.apache.solr.handler.component.HighlightComponent@2a869113
 | 
			
		||||
Jun 18, 2012 4:30:21 PM org.apache.solr.handler.component.SearchHandler inform
 | 
			
		||||
INFO: Adding  component:org.apache.solr.handler.component.StatsComponent@689e8c34
 | 
			
		||||
Jun 18, 2012 4:30:21 PM org.apache.solr.handler.component.SearchHandler inform
 | 
			
		||||
INFO: Adding  debug component:org.apache.solr.handler.component.DebugComponent@106df95
 | 
			
		||||
Jun 18, 2012 4:30:21 PM org.apache.solr.handler.component.SearchHandler inform
 | 
			
		||||
INFO: Adding  component:org.apache.solr.handler.component.QueryComponent@7dc21ece
 | 
			
		||||
Jun 18, 2012 4:30:21 PM org.apache.solr.handler.component.SearchHandler inform
 | 
			
		||||
INFO: Adding  component:org.apache.solr.handler.component.FacetComponent@5374a6e2
 | 
			
		||||
Jun 18, 2012 4:30:21 PM org.apache.solr.handler.component.SearchHandler inform
 | 
			
		||||
INFO: Adding  component:org.apache.solr.handler.component.MoreLikeThisComponent@f786a3c
 | 
			
		||||
Jun 18, 2012 4:30:21 PM org.apache.solr.handler.component.SearchHandler inform
 | 
			
		||||
INFO: Adding  component:org.apache.solr.handler.component.HighlightComponent@2a869113
 | 
			
		||||
Jun 18, 2012 4:30:21 PM org.apache.solr.handler.component.SearchHandler inform
 | 
			
		||||
INFO: Adding  component:org.apache.solr.handler.component.StatsComponent@689e8c34
 | 
			
		||||
Jun 18, 2012 4:30:21 PM org.apache.solr.handler.component.SearchHandler inform
 | 
			
		||||
INFO: Adding  component:org.apache.solr.handler.component.SpellCheckComponent@6a40afb9
 | 
			
		||||
Jun 18, 2012 4:30:21 PM org.apache.solr.handler.component.SearchHandler inform
 | 
			
		||||
INFO: Adding  debug component:org.apache.solr.handler.component.DebugComponent@106df95
 | 
			
		||||
Jun 18, 2012 4:30:21 PM org.apache.solr.handler.component.SearchHandler inform
 | 
			
		||||
INFO: Adding  component:org.apache.solr.handler.component.QueryComponent@7dc21ece
 | 
			
		||||
Jun 18, 2012 4:30:21 PM org.apache.solr.handler.component.SearchHandler inform
 | 
			
		||||
INFO: Adding  component:org.apache.solr.handler.component.FacetComponent@5374a6e2
 | 
			
		||||
Jun 18, 2012 4:30:21 PM org.apache.solr.handler.component.SearchHandler inform
 | 
			
		||||
INFO: Adding  component:org.apache.solr.handler.component.MoreLikeThisComponent@f786a3c
 | 
			
		||||
Jun 18, 2012 4:30:21 PM org.apache.solr.handler.component.SearchHandler inform
 | 
			
		||||
INFO: Adding  component:org.apache.solr.handler.component.HighlightComponent@2a869113
 | 
			
		||||
Jun 18, 2012 4:30:21 PM org.apache.solr.handler.component.SearchHandler inform
 | 
			
		||||
INFO: Adding  component:org.apache.solr.handler.component.StatsComponent@689e8c34
 | 
			
		||||
Jun 18, 2012 4:30:21 PM org.apache.solr.handler.component.SearchHandler inform
 | 
			
		||||
INFO: Adding  component:org.apache.solr.handler.component.TermVectorComponent@3cd0d12e
 | 
			
		||||
Jun 18, 2012 4:30:21 PM org.apache.solr.handler.component.SearchHandler inform
 | 
			
		||||
INFO: Adding  debug component:org.apache.solr.handler.component.DebugComponent@106df95
 | 
			
		||||
Jun 18, 2012 4:30:21 PM org.apache.solr.handler.component.SearchHandler inform
 | 
			
		||||
INFO: Adding  component:org.apache.solr.handler.component.TermsComponent@31554233
 | 
			
		||||
Jun 18, 2012 4:30:21 PM org.apache.solr.core.QuerySenderListener newSearcher
 | 
			
		||||
INFO: QuerySenderListener sending requests to Searcher@3b5b123b main
 | 
			
		||||
Jun 18, 2012 4:30:21 PM org.apache.solr.core.CoreContainer register
 | 
			
		||||
INFO: registering core: 
 | 
			
		||||
Jun 18, 2012 4:30:21 PM org.apache.solr.servlet.SolrDispatchFilter init
 | 
			
		||||
INFO: user.dir=/Users/kaito/.rvm/gems/ruby-1.9.2-p290@orbit/gems/sunspot_solr-1.3.3/solr
 | 
			
		||||
Jun 18, 2012 4:30:21 PM org.apache.solr.servlet.SolrDispatchFilter init
 | 
			
		||||
INFO: SolrDispatchFilter.init() done
 | 
			
		||||
Jun 18, 2012 4:30:21 PM org.apache.solr.core.SolrCore execute
 | 
			
		||||
INFO: [] webapp=null path=null params={start=0&event=firstSearcher&q=solr+rocks&rows=10} hits=0 status=0 QTime=43 
 | 
			
		||||
Jun 18, 2012 4:30:21 PM org.apache.solr.core.SolrCore execute
 | 
			
		||||
INFO: [] webapp=null path=null params={event=firstSearcher&q=static+firstSearcher+warming+query+from+solrconfig.xml} hits=0 status=0 QTime=1 
 | 
			
		||||
Jun 18, 2012 4:30:21 PM org.apache.solr.core.QuerySenderListener newSearcher
 | 
			
		||||
INFO: QuerySenderListener done.
 | 
			
		||||
Jun 18, 2012 4:30:21 PM org.apache.solr.handler.component.SpellCheckComponent$SpellCheckerListener newSearcher
 | 
			
		||||
INFO: Loading spell index for spellchecker: default
 | 
			
		||||
Jun 18, 2012 4:30:21 PM org.apache.solr.core.SolrCore registerSearcher
 | 
			
		||||
INFO: [] Registered new searcher Searcher@3b5b123b main
 | 
			
		||||
Jun 18, 2012 4:30:21 PM org.apache.solr.servlet.SolrServlet init
 | 
			
		||||
INFO: SolrServlet.init()
 | 
			
		||||
Jun 18, 2012 4:30:21 PM org.apache.solr.core.SolrResourceLoader locateSolrHome
 | 
			
		||||
INFO: JNDI not configured for solr (NoInitialContextEx)
 | 
			
		||||
Jun 18, 2012 4:30:21 PM org.apache.solr.core.SolrResourceLoader locateSolrHome
 | 
			
		||||
INFO: using system property solr.solr.home: /Users/kaito/Documents/MyWorkspeace/NCCU/solr
 | 
			
		||||
Jun 18, 2012 4:30:21 PM org.apache.solr.servlet.SolrServlet init
 | 
			
		||||
INFO: SolrServlet.init() done
 | 
			
		||||
Jun 18, 2012 4:30:21 PM org.apache.solr.core.SolrResourceLoader locateSolrHome
 | 
			
		||||
INFO: JNDI not configured for solr (NoInitialContextEx)
 | 
			
		||||
Jun 18, 2012 4:30:21 PM org.apache.solr.core.SolrResourceLoader locateSolrHome
 | 
			
		||||
INFO: using system property solr.solr.home: /Users/kaito/Documents/MyWorkspeace/NCCU/solr
 | 
			
		||||
Jun 18, 2012 4:30:21 PM org.apache.solr.servlet.SolrUpdateServlet init
 | 
			
		||||
INFO: SolrUpdateServlet.init() done
 | 
			
		||||
| 
						 | 
				
			
			@ -4,246 +4,6 @@
 | 
			
		|||
  <link rel="alternate" href="http://events.nccu.edu.tw/" />
 | 
			
		||||
  <subtitle>本月最新活動</subtitle>
 | 
			
		||||
  <dc:language>zh-tw</dc:language>
 | 
			
		||||
  <entry>
 | 
			
		||||
    <title>「系際盃拔河賽」活動</title>
 | 
			
		||||
    <link rel="alternate" href="http://events.nccu.edu.tw/more.do?key=2944&key2=20120515" />
 | 
			
		||||
    <author>
 | 
			
		||||
      <name />
 | 
			
		||||
    </author>
 | 
			
		||||
    <summary type="text">101/05/14-101/05/16 12:00-14:00</summary>
 | 
			
		||||
  </entry>
 | 
			
		||||
  <entry>
 | 
			
		||||
    <title>LEXUS百萬挑戰賽校園巡迴說明會</title>
 | 
			
		||||
    <link rel="alternate" href="http://events.nccu.edu.tw/more.do?key=2927&key2=20120515" />
 | 
			
		||||
    <author>
 | 
			
		||||
      <name />
 | 
			
		||||
    </author>
 | 
			
		||||
    <summary type="text">101/05/15 12:00-12:45</summary>
 | 
			
		||||
  </entry>
 | 
			
		||||
  <entry>
 | 
			
		||||
    <title>職場講座「數位文本實務課程」</title>
 | 
			
		||||
    <link rel="alternate" href="http://events.nccu.edu.tw/more.do?key=2874&key2=20120515" />
 | 
			
		||||
    <author>
 | 
			
		||||
      <name />
 | 
			
		||||
    </author>
 | 
			
		||||
    <summary type="text">101/04/24-101/05/15 12:20-13:50</summary>
 | 
			
		||||
  </entry>
 | 
			
		||||
  <entry>
 | 
			
		||||
    <title>「系際盃拔河賽」活動</title>
 | 
			
		||||
    <link rel="alternate" href="http://events.nccu.edu.tw/more.do?key=2944&key2=20120516" />
 | 
			
		||||
    <author>
 | 
			
		||||
      <name />
 | 
			
		||||
    </author>
 | 
			
		||||
    <summary type="text">101/05/14-101/05/16 12:00-14:00</summary>
 | 
			
		||||
  </entry>
 | 
			
		||||
  <entry>
 | 
			
		||||
    <title>85週年校慶運動會</title>
 | 
			
		||||
    <link rel="alternate" href="http://events.nccu.edu.tw/more.do?key=2945&key2=20120517" />
 | 
			
		||||
    <author>
 | 
			
		||||
      <name />
 | 
			
		||||
    </author>
 | 
			
		||||
    <summary type="text">101/05/17-101/05/18 08:00-17:00</summary>
 | 
			
		||||
  </entry>
 | 
			
		||||
  <entry>
 | 
			
		||||
    <title>85週年校慶運動會</title>
 | 
			
		||||
    <link rel="alternate" href="http://events.nccu.edu.tw/more.do?key=2945&key2=20120518" />
 | 
			
		||||
    <author>
 | 
			
		||||
      <name />
 | 
			
		||||
    </author>
 | 
			
		||||
    <summary type="text">101/05/17-101/05/18 08:00-17:00</summary>
 | 
			
		||||
  </entry>
 | 
			
		||||
  <entry>
 | 
			
		||||
    <title>2012年福祿貝爾恩物親子戲遊成長團體(上午)</title>
 | 
			
		||||
    <link rel="alternate" href="http://events.nccu.edu.tw/more.do?key=2833&key2=20120519" />
 | 
			
		||||
    <author>
 | 
			
		||||
      <name />
 | 
			
		||||
    </author>
 | 
			
		||||
    <summary type="text">101/04/07-101/06/02 09:00-11:00</summary>
 | 
			
		||||
  </entry>
 | 
			
		||||
  <entry>
 | 
			
		||||
    <title>2012年福祿貝爾恩物親子戲遊成長團體(下午)</title>
 | 
			
		||||
    <link rel="alternate" href="http://events.nccu.edu.tw/more.do?key=2834&key2=20120519" />
 | 
			
		||||
    <author>
 | 
			
		||||
      <name />
 | 
			
		||||
    </author>
 | 
			
		||||
    <summary type="text">101/04/07-101/06/09 14:00-16:00</summary>
 | 
			
		||||
  </entry>
 | 
			
		||||
  <entry>
 | 
			
		||||
    <title>商學院羽球賽</title>
 | 
			
		||||
    <link rel="alternate" href="http://events.nccu.edu.tw/more.do?key=2946&key2=20120520" />
 | 
			
		||||
    <author>
 | 
			
		||||
      <name />
 | 
			
		||||
    </author>
 | 
			
		||||
    <summary type="text">101/05/20 08:00-17:00</summary>
 | 
			
		||||
  </entry>
 | 
			
		||||
  <entry>
 | 
			
		||||
    <title>期末舞展/彩排</title>
 | 
			
		||||
    <link rel="alternate" href="http://events.nccu.edu.tw/more.do?key=2928&key2=20120522" />
 | 
			
		||||
    <author>
 | 
			
		||||
      <name />
 | 
			
		||||
    </author>
 | 
			
		||||
    <summary type="text">政治大學熱舞社17th成果發表 《i》6:30入場</summary>
 | 
			
		||||
  </entry>
 | 
			
		||||
  <entry>
 | 
			
		||||
    <title>期末舞展/彩排</title>
 | 
			
		||||
    <link rel="alternate" href="http://events.nccu.edu.tw/more.do?key=2928&key2=20120523" />
 | 
			
		||||
    <author>
 | 
			
		||||
      <name />
 | 
			
		||||
    </author>
 | 
			
		||||
    <summary type="text">政治大學熱舞社17th成果發表 《i》6:30入場</summary>
 | 
			
		||||
  </entry>
 | 
			
		||||
  <entry>
 | 
			
		||||
    <title>★特優TA教學觀摩(不動產投資與市場分析)</title>
 | 
			
		||||
    <link rel="alternate" href="http://events.nccu.edu.tw/more.do?key=2932&key2=20120524" />
 | 
			
		||||
    <author>
 | 
			
		||||
      <name />
 | 
			
		||||
    </author>
 | 
			
		||||
    <summary type="text">101/05/24 12:10-13:00</summary>
 | 
			
		||||
  </entry>
 | 
			
		||||
  <entry>
 | 
			
		||||
    <title>文化講座「破戒:關於『色•戒』的實與虛」</title>
 | 
			
		||||
    <link rel="alternate" href="http://events.nccu.edu.tw/more.do?key=2875&key2=20120524" />
 | 
			
		||||
    <author>
 | 
			
		||||
      <name />
 | 
			
		||||
    </author>
 | 
			
		||||
    <summary type="text">101/05/24 12:20-14:00</summary>
 | 
			
		||||
  </entry>
 | 
			
		||||
  <entry>
 | 
			
		||||
    <title>團隊導向學習(TBL)及Campus Pasck研習工作坊</title>
 | 
			
		||||
    <link rel="alternate" href="http://events.nccu.edu.tw/more.do?key=2941&key2=20120525" />
 | 
			
		||||
    <author>
 | 
			
		||||
      <name />
 | 
			
		||||
    </author>
 | 
			
		||||
    <summary type="text">101/05/25 12:00-14:00</summary>
 | 
			
		||||
  </entry>
 | 
			
		||||
  <entry>
 | 
			
		||||
    <title>青春活力校園展演(歌仔戲):《馴夫記》</title>
 | 
			
		||||
    <link rel="alternate" href="http://events.nccu.edu.tw/more.do?key=2942&key2=20120525" />
 | 
			
		||||
    <author>
 | 
			
		||||
      <name />
 | 
			
		||||
    </author>
 | 
			
		||||
    <summary type="text">101/05/25 19:00-21:00</summary>
 | 
			
		||||
  </entry>
 | 
			
		||||
  <entry>
 | 
			
		||||
    <title>國際交流足球聯賽</title>
 | 
			
		||||
    <link rel="alternate" href="http://events.nccu.edu.tw/more.do?key=2948&key2=20120526" />
 | 
			
		||||
    <author>
 | 
			
		||||
      <name />
 | 
			
		||||
    </author>
 | 
			
		||||
    <summary type="text">101/05/26 08:00-17:00</summary>
 | 
			
		||||
  </entry>
 | 
			
		||||
  <entry>
 | 
			
		||||
    <title>政大盃桌球賽</title>
 | 
			
		||||
    <link rel="alternate" href="http://events.nccu.edu.tw/more.do?key=2949&key2=20120526" />
 | 
			
		||||
    <author>
 | 
			
		||||
      <name />
 | 
			
		||||
    </author>
 | 
			
		||||
    <summary type="text">101/05/26 08:00-17:00</summary>
 | 
			
		||||
  </entry>
 | 
			
		||||
  <entry>
 | 
			
		||||
    <title>2012年福祿貝爾恩物親子戲遊成長團體(上午)</title>
 | 
			
		||||
    <link rel="alternate" href="http://events.nccu.edu.tw/more.do?key=2833&key2=20120526" />
 | 
			
		||||
    <author>
 | 
			
		||||
      <name />
 | 
			
		||||
    </author>
 | 
			
		||||
    <summary type="text">101/04/07-101/06/02 09:00-11:00</summary>
 | 
			
		||||
  </entry>
 | 
			
		||||
  <entry>
 | 
			
		||||
    <title>五院盃羽球賽</title>
 | 
			
		||||
    <link rel="alternate" href="http://events.nccu.edu.tw/more.do?key=2947&key2=20120526" />
 | 
			
		||||
    <author>
 | 
			
		||||
      <name />
 | 
			
		||||
    </author>
 | 
			
		||||
    <summary type="text">101/05/26 09:00-17:00</summary>
 | 
			
		||||
  </entry>
 | 
			
		||||
  <entry>
 | 
			
		||||
    <title>TOEIC英語測驗校園考</title>
 | 
			
		||||
    <link rel="alternate" href="http://events.nccu.edu.tw/more.do?key=2872&key2=20120526" />
 | 
			
		||||
    <author>
 | 
			
		||||
      <name />
 | 
			
		||||
    </author>
 | 
			
		||||
    <summary type="text">101/05/26 09:30-12:00</summary>
 | 
			
		||||
  </entry>
 | 
			
		||||
  <entry>
 | 
			
		||||
    <title>2012年福祿貝爾恩物親子戲遊成長團體(下午)</title>
 | 
			
		||||
    <link rel="alternate" href="http://events.nccu.edu.tw/more.do?key=2834&key2=20120526" />
 | 
			
		||||
    <author>
 | 
			
		||||
      <name />
 | 
			
		||||
    </author>
 | 
			
		||||
    <summary type="text">101/04/07-101/06/09 14:00-16:00</summary>
 | 
			
		||||
  </entry>
 | 
			
		||||
  <entry>
 | 
			
		||||
    <title>期末公演</title>
 | 
			
		||||
    <link rel="alternate" href="http://events.nccu.edu.tw/more.do?key=2736&key2=20120526" />
 | 
			
		||||
    <author>
 | 
			
		||||
      <name />
 | 
			
		||||
    </author>
 | 
			
		||||
    <summary type="text">2012/5/26  13:00入場  13:30開始</summary>
 | 
			
		||||
  </entry>
 | 
			
		||||
  <entry>
 | 
			
		||||
    <title>傳播學院媒體參訪(二)壹電視</title>
 | 
			
		||||
    <link rel="alternate" href="http://events.nccu.edu.tw/more.do?key=2916&key2=20120530" />
 | 
			
		||||
    <author>
 | 
			
		||||
      <name />
 | 
			
		||||
    </author>
 | 
			
		||||
    <summary type="text">101/05/30 14:00-16:30</summary>
 | 
			
		||||
  </entry>
 | 
			
		||||
  <entry>
 | 
			
		||||
    <title>國樂講座—國樂演奏會【故鄉情】</title>
 | 
			
		||||
    <link rel="alternate" href="http://events.nccu.edu.tw/more.do?key=2897&key2=20120530" />
 | 
			
		||||
    <author>
 | 
			
		||||
      <name />
 | 
			
		||||
    </author>
 | 
			
		||||
    <summary type="text">101/05/30 19:30-21:00</summary>
 | 
			
		||||
  </entry>
 | 
			
		||||
  <entry>
 | 
			
		||||
    <title>2012年福祿貝爾恩物親子戲遊成長團體(上午)</title>
 | 
			
		||||
    <link rel="alternate" href="http://events.nccu.edu.tw/more.do?key=2833&key2=20120602" />
 | 
			
		||||
    <author>
 | 
			
		||||
      <name />
 | 
			
		||||
    </author>
 | 
			
		||||
    <summary type="text">101/04/07-101/06/02 09:00-11:00</summary>
 | 
			
		||||
  </entry>
 | 
			
		||||
  <entry>
 | 
			
		||||
    <title>100學年畢業典禮</title>
 | 
			
		||||
    <link rel="alternate" href="http://events.nccu.edu.tw/more.do?key=2405&key2=20120602" />
 | 
			
		||||
    <author>
 | 
			
		||||
      <name />
 | 
			
		||||
    </author>
 | 
			
		||||
    <summary type="text">101/06/02 09:00-17:00</summary>
 | 
			
		||||
  </entry>
 | 
			
		||||
  <entry>
 | 
			
		||||
    <title>100學年度文學院研究所畢業生撥穗典禮</title>
 | 
			
		||||
    <link rel="alternate" href="http://events.nccu.edu.tw/more.do?key=2937&key2=20120602" />
 | 
			
		||||
    <author>
 | 
			
		||||
      <name />
 | 
			
		||||
    </author>
 | 
			
		||||
    <summary type="text">101/06/02 10:00-11:30</summary>
 | 
			
		||||
  </entry>
 | 
			
		||||
  <entry>
 | 
			
		||||
    <title>100學年度文學院大學部畢業生撥穗典禮</title>
 | 
			
		||||
    <link rel="alternate" href="http://events.nccu.edu.tw/more.do?key=2958&key2=20120602" />
 | 
			
		||||
    <author>
 | 
			
		||||
      <name />
 | 
			
		||||
    </author>
 | 
			
		||||
    <summary type="text">101/06/02 12:00-13:30</summary>
 | 
			
		||||
  </entry>
 | 
			
		||||
  <entry>
 | 
			
		||||
    <title>2012年福祿貝爾恩物親子戲遊成長團體(下午)</title>
 | 
			
		||||
    <link rel="alternate" href="http://events.nccu.edu.tw/more.do?key=2834&key2=20120602" />
 | 
			
		||||
    <author>
 | 
			
		||||
      <name />
 | 
			
		||||
    </author>
 | 
			
		||||
    <summary type="text">101/04/07-101/06/09 14:00-16:00</summary>
 | 
			
		||||
  </entry>
 | 
			
		||||
  <entry>
 | 
			
		||||
    <title>往內在旅行,尋覓你的人格風景</title>
 | 
			
		||||
    <link rel="alternate" href="http://events.nccu.edu.tw/more.do?key=2961&key2=20120603" />
 | 
			
		||||
    <author>
 | 
			
		||||
      <name />
 | 
			
		||||
    </author>
 | 
			
		||||
    <summary type="text">101/06/03 09:00-16:30</summary>
 | 
			
		||||
  </entry>
 | 
			
		||||
  <entry>
 | 
			
		||||
    <title>政大講座論壇:東亞模式的民法典?(蘇永欽講座教授)</title>
 | 
			
		||||
    <link rel="alternate" href="http://events.nccu.edu.tw/more.do?key=2962&key2=20120604" />
 | 
			
		||||
| 
						 | 
				
			
			@ -252,6 +12,38 @@
 | 
			
		|||
    </author>
 | 
			
		||||
    <summary type="text">101/06/04 10:10-11:50</summary>
 | 
			
		||||
  </entry>
 | 
			
		||||
  <entry>
 | 
			
		||||
    <title>文化講座【父親與民國】-白先勇</title>
 | 
			
		||||
    <link rel="alternate" href="http://events.nccu.edu.tw/more.do?key=2976&key2=20120606" />
 | 
			
		||||
    <author>
 | 
			
		||||
      <name />
 | 
			
		||||
    </author>
 | 
			
		||||
    <summary type="text">101/06/06 14:00-16:00</summary>
 | 
			
		||||
  </entry>
 | 
			
		||||
  <entry>
 | 
			
		||||
    <title>鄭丁旺講座教授榮退專題演講-我國會計發展的回顧與前瞻</title>
 | 
			
		||||
    <link rel="alternate" href="http://events.nccu.edu.tw/more.do?key=2974&key2=20120607" />
 | 
			
		||||
    <author>
 | 
			
		||||
      <name />
 | 
			
		||||
    </author>
 | 
			
		||||
    <summary type="text">101/06/07 10:00-12:30</summary>
 | 
			
		||||
  </entry>
 | 
			
		||||
  <entry>
 | 
			
		||||
    <title>弦樂社</title>
 | 
			
		||||
    <link rel="alternate" href="http://events.nccu.edu.tw/more.do?key=2975&key2=20120607" />
 | 
			
		||||
    <author>
 | 
			
		||||
      <name />
 | 
			
		||||
    </author>
 | 
			
		||||
    <summary type="text">政大弦樂社期末成果發表音樂會</summary>
 | 
			
		||||
  </entry>
 | 
			
		||||
  <entry>
 | 
			
		||||
    <title>期末舞展</title>
 | 
			
		||||
    <link rel="alternate" href="http://events.nccu.edu.tw/more.do?key=2980&key2=20120607" />
 | 
			
		||||
    <author>
 | 
			
		||||
      <name />
 | 
			
		||||
    </author>
 | 
			
		||||
    <summary type="text">政大國標社期末舞展 歡迎大家來共襄盛舉</summary>
 | 
			
		||||
  </entry>
 | 
			
		||||
  <entry>
 | 
			
		||||
    <title>國際學院運動會</title>
 | 
			
		||||
    <link rel="alternate" href="http://events.nccu.edu.tw/more.do?key=2951&key2=20120609" />
 | 
			
		||||
| 
						 | 
				
			
			@ -300,5 +92,45 @@
 | 
			
		|||
    </author>
 | 
			
		||||
    <summary type="text">101/06/10 08:00-17:00</summary>
 | 
			
		||||
  </entry>
 | 
			
		||||
  <entry>
 | 
			
		||||
    <title>教職員羽球賽</title>
 | 
			
		||||
    <link rel="alternate" href="http://events.nccu.edu.tw/more.do?key=2953&key2=20120616" />
 | 
			
		||||
    <author>
 | 
			
		||||
      <name />
 | 
			
		||||
    </author>
 | 
			
		||||
    <summary type="text">101/06/16 08:00-12:00</summary>
 | 
			
		||||
  </entry>
 | 
			
		||||
  <entry>
 | 
			
		||||
    <title>「樂活飲食•健康之鑰」系列活動--餐飲實務操作與食品安全</title>
 | 
			
		||||
    <link rel="alternate" href="http://events.nccu.edu.tw/more.do?key=2753&key2=20120622" />
 | 
			
		||||
    <author>
 | 
			
		||||
      <name />
 | 
			
		||||
    </author>
 | 
			
		||||
    <summary type="text">101/06/22 14:00-16:00</summary>
 | 
			
		||||
  </entry>
 | 
			
		||||
  <entry>
 | 
			
		||||
    <title>學生議會預備會議</title>
 | 
			
		||||
    <link rel="alternate" href="http://events.nccu.edu.tw/more.do?key=2984&key2=20120622" />
 | 
			
		||||
    <author>
 | 
			
		||||
      <name />
 | 
			
		||||
    </author>
 | 
			
		||||
    <summary type="text">第13屆學生議會第1會期預備會議,將選舉新任學生議會議長、副議長,歡迎政大同學列席旁聽!!</summary>
 | 
			
		||||
  </entry>
 | 
			
		||||
  <entry>
 | 
			
		||||
    <title>山水講堂:政大教學日</title>
 | 
			
		||||
    <link rel="alternate" href="http://events.nccu.edu.tw/more.do?key=2972&key2=20120626" />
 | 
			
		||||
    <author>
 | 
			
		||||
      <name />
 | 
			
		||||
    </author>
 | 
			
		||||
    <summary type="text">101/06/26 08:20-16:40</summary>
 | 
			
		||||
  </entry>
 | 
			
		||||
  <entry>
 | 
			
		||||
    <title>「樂活飲食•健康之鑰」系列活動--廚房消毒與病媒防治</title>
 | 
			
		||||
    <link rel="alternate" href="http://events.nccu.edu.tw/more.do?key=2757&key2=20120629" />
 | 
			
		||||
    <author>
 | 
			
		||||
      <name />
 | 
			
		||||
    </author>
 | 
			
		||||
    <summary type="text">101/06/29 14:00-16:00</summary>
 | 
			
		||||
  </entry>
 | 
			
		||||
</feed>
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -0,0 +1,31 @@
 | 
			
		|||
<!--
 | 
			
		||||
 Licensed to the Apache Software Foundation (ASF) under one or more
 | 
			
		||||
 contributor license agreements.  See the NOTICE file distributed with
 | 
			
		||||
 this work for additional information regarding copyright ownership.
 | 
			
		||||
 The ASF licenses this file to You under the Apache License, Version 2.0
 | 
			
		||||
 (the "License"); you may not use this file except in compliance with
 | 
			
		||||
 the License.  You may obtain a copy of the License at
 | 
			
		||||
 | 
			
		||||
     http://www.apache.org/licenses/LICENSE-2.0
 | 
			
		||||
 | 
			
		||||
 Unless required by applicable law or agreed to in writing, software
 | 
			
		||||
 distributed under the License is distributed on an "AS IS" BASIS,
 | 
			
		||||
 WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 | 
			
		||||
 See the License for the specific language governing permissions and
 | 
			
		||||
 limitations under the License.
 | 
			
		||||
-->
 | 
			
		||||
 | 
			
		||||
<!-- The content of this page will be statically included into the top
 | 
			
		||||
of the admin page.  Uncomment this as an example to see there the content
 | 
			
		||||
will show up.
 | 
			
		||||
 | 
			
		||||
<hr>
 | 
			
		||||
<i>This line will appear before the first table</i>
 | 
			
		||||
<tr>
 | 
			
		||||
<td colspan="2">
 | 
			
		||||
This row will be appended to the end of the first table
 | 
			
		||||
</td>
 | 
			
		||||
</tr>
 | 
			
		||||
<hr>
 | 
			
		||||
 | 
			
		||||
-->
 | 
			
		||||
| 
						 | 
				
			
			@ -0,0 +1,36 @@
 | 
			
		|||
<?xml version="1.0" encoding="UTF-8" ?>
 | 
			
		||||
<!--
 | 
			
		||||
 Licensed to the Apache Software Foundation (ASF) under one or more
 | 
			
		||||
 contributor license agreements.  See the NOTICE file distributed with
 | 
			
		||||
 this work for additional information regarding copyright ownership.
 | 
			
		||||
 The ASF licenses this file to You under the Apache License, Version 2.0
 | 
			
		||||
 (the "License"); you may not use this file except in compliance with
 | 
			
		||||
 the License.  You may obtain a copy of the License at
 | 
			
		||||
 | 
			
		||||
     http://www.apache.org/licenses/LICENSE-2.0
 | 
			
		||||
 | 
			
		||||
 Unless required by applicable law or agreed to in writing, software
 | 
			
		||||
 distributed under the License is distributed on an "AS IS" BASIS,
 | 
			
		||||
 WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 | 
			
		||||
 See the License for the specific language governing permissions and
 | 
			
		||||
 limitations under the License.
 | 
			
		||||
-->
 | 
			
		||||
 | 
			
		||||
<!-- If this file is found in the config directory, it will only be
 | 
			
		||||
     loaded once at startup.  If it is found in Solr's data
 | 
			
		||||
     directory, it will be re-loaded every commit.
 | 
			
		||||
-->
 | 
			
		||||
 | 
			
		||||
<elevate>
 | 
			
		||||
 <query text="foo bar">
 | 
			
		||||
  <doc id="1" />
 | 
			
		||||
  <doc id="2" />
 | 
			
		||||
  <doc id="3" />
 | 
			
		||||
 </query>
 | 
			
		||||
 
 | 
			
		||||
 <query text="ipod">
 | 
			
		||||
   <doc id="MA147LL/A" />  <!-- put the actual ipod at the top -->
 | 
			
		||||
   <doc id="IW-02" exclude="true" /> <!-- exclude this cable -->
 | 
			
		||||
 </query>
 | 
			
		||||
 
 | 
			
		||||
</elevate>
 | 
			
		||||
| 
						 | 
				
			
			@ -0,0 +1,246 @@
 | 
			
		|||
# The ASF licenses this file to You under the Apache License, Version 2.0
 | 
			
		||||
# (the "License"); you may not use this file except in compliance with
 | 
			
		||||
# the License.  You may obtain a copy of the License at
 | 
			
		||||
#
 | 
			
		||||
#     http://www.apache.org/licenses/LICENSE-2.0
 | 
			
		||||
#
 | 
			
		||||
# Unless required by applicable law or agreed to in writing, software
 | 
			
		||||
# distributed under the License is distributed on an "AS IS" BASIS,
 | 
			
		||||
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 | 
			
		||||
# See the License for the specific language governing permissions and
 | 
			
		||||
# limitations under the License.
 | 
			
		||||
 | 
			
		||||
# Syntax:
 | 
			
		||||
#   "source" => "target"
 | 
			
		||||
#     "source".length() > 0 (source cannot be empty.)
 | 
			
		||||
#     "target".length() >= 0 (target can be empty.)
 | 
			
		||||
 | 
			
		||||
# example:
 | 
			
		||||
#   "À" => "A"
 | 
			
		||||
#   "\u00C0" => "A"
 | 
			
		||||
#   "\u00C0" => "\u0041"
 | 
			
		||||
#   "ß" => "ss"
 | 
			
		||||
#   "\t" => " "
 | 
			
		||||
#   "\n" => ""
 | 
			
		||||
 | 
			
		||||
# À => A
 | 
			
		||||
"\u00C0" => "A"
 | 
			
		||||
 | 
			
		||||
# Á => A
 | 
			
		||||
"\u00C1" => "A"
 | 
			
		||||
 | 
			
		||||
# Â => A
 | 
			
		||||
"\u00C2" => "A"
 | 
			
		||||
 | 
			
		||||
# Ã => A
 | 
			
		||||
"\u00C3" => "A"
 | 
			
		||||
 | 
			
		||||
# Ä => A
 | 
			
		||||
"\u00C4" => "A"
 | 
			
		||||
 | 
			
		||||
# Å => A
 | 
			
		||||
"\u00C5" => "A"
 | 
			
		||||
 | 
			
		||||
# Æ => AE
 | 
			
		||||
"\u00C6" => "AE"
 | 
			
		||||
 | 
			
		||||
# Ç => C
 | 
			
		||||
"\u00C7" => "C"
 | 
			
		||||
 | 
			
		||||
# È => E
 | 
			
		||||
"\u00C8" => "E"
 | 
			
		||||
 | 
			
		||||
# É => E
 | 
			
		||||
"\u00C9" => "E"
 | 
			
		||||
 | 
			
		||||
# Ê => E
 | 
			
		||||
"\u00CA" => "E"
 | 
			
		||||
 | 
			
		||||
# Ë => E
 | 
			
		||||
"\u00CB" => "E"
 | 
			
		||||
 | 
			
		||||
# Ì => I
 | 
			
		||||
"\u00CC" => "I"
 | 
			
		||||
 | 
			
		||||
# Í => I
 | 
			
		||||
"\u00CD" => "I"
 | 
			
		||||
 | 
			
		||||
# Î => I
 | 
			
		||||
"\u00CE" => "I"
 | 
			
		||||
 | 
			
		||||
# Ï => I
 | 
			
		||||
"\u00CF" => "I"
 | 
			
		||||
 | 
			
		||||
# IJ => IJ
 | 
			
		||||
"\u0132" => "IJ"
 | 
			
		||||
 | 
			
		||||
# Ð => D
 | 
			
		||||
"\u00D0" => "D"
 | 
			
		||||
 | 
			
		||||
# Ñ => N
 | 
			
		||||
"\u00D1" => "N"
 | 
			
		||||
 | 
			
		||||
# Ò => O
 | 
			
		||||
"\u00D2" => "O"
 | 
			
		||||
 | 
			
		||||
# Ó => O
 | 
			
		||||
"\u00D3" => "O"
 | 
			
		||||
 | 
			
		||||
# Ô => O
 | 
			
		||||
"\u00D4" => "O"
 | 
			
		||||
 | 
			
		||||
# Õ => O
 | 
			
		||||
"\u00D5" => "O"
 | 
			
		||||
 | 
			
		||||
# Ö => O
 | 
			
		||||
"\u00D6" => "O"
 | 
			
		||||
 | 
			
		||||
# Ø => O
 | 
			
		||||
"\u00D8" => "O"
 | 
			
		||||
 | 
			
		||||
# Œ => OE
 | 
			
		||||
"\u0152" => "OE"
 | 
			
		||||
 | 
			
		||||
# Þ
 | 
			
		||||
"\u00DE" => "TH"
 | 
			
		||||
 | 
			
		||||
# Ù => U
 | 
			
		||||
"\u00D9" => "U"
 | 
			
		||||
 | 
			
		||||
# Ú => U
 | 
			
		||||
"\u00DA" => "U"
 | 
			
		||||
 | 
			
		||||
# Û => U
 | 
			
		||||
"\u00DB" => "U"
 | 
			
		||||
 | 
			
		||||
# Ü => U
 | 
			
		||||
"\u00DC" => "U"
 | 
			
		||||
 | 
			
		||||
# Ý => Y
 | 
			
		||||
"\u00DD" => "Y"
 | 
			
		||||
 | 
			
		||||
# Ÿ => Y
 | 
			
		||||
"\u0178" => "Y"
 | 
			
		||||
 | 
			
		||||
# à => a
 | 
			
		||||
"\u00E0" => "a"
 | 
			
		||||
 | 
			
		||||
# á => a
 | 
			
		||||
"\u00E1" => "a"
 | 
			
		||||
 | 
			
		||||
# â => a
 | 
			
		||||
"\u00E2" => "a"
 | 
			
		||||
 | 
			
		||||
# ã => a
 | 
			
		||||
"\u00E3" => "a"
 | 
			
		||||
 | 
			
		||||
# ä => a
 | 
			
		||||
"\u00E4" => "a"
 | 
			
		||||
 | 
			
		||||
# å => a
 | 
			
		||||
"\u00E5" => "a"
 | 
			
		||||
 | 
			
		||||
# æ => ae
 | 
			
		||||
"\u00E6" => "ae"
 | 
			
		||||
 | 
			
		||||
# ç => c
 | 
			
		||||
"\u00E7" => "c"
 | 
			
		||||
 | 
			
		||||
# è => e
 | 
			
		||||
"\u00E8" => "e"
 | 
			
		||||
 | 
			
		||||
# é => e
 | 
			
		||||
"\u00E9" => "e"
 | 
			
		||||
 | 
			
		||||
# ê => e
 | 
			
		||||
"\u00EA" => "e"
 | 
			
		||||
 | 
			
		||||
# ë => e
 | 
			
		||||
"\u00EB" => "e"
 | 
			
		||||
 | 
			
		||||
# ì => i
 | 
			
		||||
"\u00EC" => "i"
 | 
			
		||||
 | 
			
		||||
# í => i
 | 
			
		||||
"\u00ED" => "i"
 | 
			
		||||
 | 
			
		||||
# î => i
 | 
			
		||||
"\u00EE" => "i"
 | 
			
		||||
 | 
			
		||||
# ï => i
 | 
			
		||||
"\u00EF" => "i"
 | 
			
		||||
 | 
			
		||||
# ij => ij
 | 
			
		||||
"\u0133" => "ij"
 | 
			
		||||
 | 
			
		||||
# ð => d
 | 
			
		||||
"\u00F0" => "d"
 | 
			
		||||
 | 
			
		||||
# ñ => n
 | 
			
		||||
"\u00F1" => "n"
 | 
			
		||||
 | 
			
		||||
# ò => o
 | 
			
		||||
"\u00F2" => "o"
 | 
			
		||||
 | 
			
		||||
# ó => o
 | 
			
		||||
"\u00F3" => "o"
 | 
			
		||||
 | 
			
		||||
# ô => o
 | 
			
		||||
"\u00F4" => "o"
 | 
			
		||||
 | 
			
		||||
# õ => o
 | 
			
		||||
"\u00F5" => "o"
 | 
			
		||||
 | 
			
		||||
# ö => o
 | 
			
		||||
"\u00F6" => "o"
 | 
			
		||||
 | 
			
		||||
# ø => o
 | 
			
		||||
"\u00F8" => "o"
 | 
			
		||||
 | 
			
		||||
# œ => oe
 | 
			
		||||
"\u0153" => "oe"
 | 
			
		||||
 | 
			
		||||
# ß => ss
 | 
			
		||||
"\u00DF" => "ss"
 | 
			
		||||
 | 
			
		||||
# þ => th
 | 
			
		||||
"\u00FE" => "th"
 | 
			
		||||
 | 
			
		||||
# ù => u
 | 
			
		||||
"\u00F9" => "u"
 | 
			
		||||
 | 
			
		||||
# ú => u
 | 
			
		||||
"\u00FA" => "u"
 | 
			
		||||
 | 
			
		||||
# û => u
 | 
			
		||||
"\u00FB" => "u"
 | 
			
		||||
 | 
			
		||||
# ü => u
 | 
			
		||||
"\u00FC" => "u"
 | 
			
		||||
 | 
			
		||||
# ý => y
 | 
			
		||||
"\u00FD" => "y"
 | 
			
		||||
 | 
			
		||||
# ÿ => y
 | 
			
		||||
"\u00FF" => "y"
 | 
			
		||||
 | 
			
		||||
# ff => ff
 | 
			
		||||
"\uFB00" => "ff"
 | 
			
		||||
 | 
			
		||||
# fi => fi
 | 
			
		||||
"\uFB01" => "fi"
 | 
			
		||||
 | 
			
		||||
# fl => fl
 | 
			
		||||
"\uFB02" => "fl"
 | 
			
		||||
 | 
			
		||||
# ffi => ffi
 | 
			
		||||
"\uFB03" => "ffi"
 | 
			
		||||
 | 
			
		||||
# ffl => ffl
 | 
			
		||||
"\uFB04" => "ffl"
 | 
			
		||||
 | 
			
		||||
# ſt => ft
 | 
			
		||||
"\uFB05" => "ft"
 | 
			
		||||
 | 
			
		||||
# st => st
 | 
			
		||||
"\uFB06" => "st"
 | 
			
		||||
| 
						 | 
				
			
			@ -0,0 +1,21 @@
 | 
			
		|||
# The ASF licenses this file to You under the Apache License, Version 2.0
 | 
			
		||||
# (the "License"); you may not use this file except in compliance with
 | 
			
		||||
# the License.  You may obtain a copy of the License at
 | 
			
		||||
#
 | 
			
		||||
#     http://www.apache.org/licenses/LICENSE-2.0
 | 
			
		||||
#
 | 
			
		||||
# Unless required by applicable law or agreed to in writing, software
 | 
			
		||||
# distributed under the License is distributed on an "AS IS" BASIS,
 | 
			
		||||
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 | 
			
		||||
# See the License for the specific language governing permissions and
 | 
			
		||||
# limitations under the License.
 | 
			
		||||
 | 
			
		||||
#-----------------------------------------------------------------------
 | 
			
		||||
# Use a protected word file to protect against the stemmer reducing two
 | 
			
		||||
# unrelated words to the same base word.
 | 
			
		||||
 | 
			
		||||
# Some non-words that normally won't be encountered,
 | 
			
		||||
# just to test that they won't be stemmed.
 | 
			
		||||
dontstems
 | 
			
		||||
zwhacky
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -0,0 +1,245 @@
 | 
			
		|||
<?xml version="1.0" encoding="UTF-8"?>
 | 
			
		||||
<!--
 | 
			
		||||
 Licensed to the Apache Software Foundation (ASF) under one or more
 | 
			
		||||
 contributor license agreements.  See the NOTICE file distributed with
 | 
			
		||||
 this work for additional information regarding copyright ownership.
 | 
			
		||||
 The ASF licenses this file to You under the Apache License, Version 2.0
 | 
			
		||||
 (the "License"); you may not use this file except in compliance with
 | 
			
		||||
 the License.  You may obtain a copy of the License at
 | 
			
		||||
 | 
			
		||||
     http://www.apache.org/licenses/LICENSE-2.0
 | 
			
		||||
 | 
			
		||||
 Unless required by applicable law or agreed to in writing, software
 | 
			
		||||
 distributed under the License is distributed on an "AS IS" BASIS,
 | 
			
		||||
 WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 | 
			
		||||
 See the License for the specific language governing permissions and
 | 
			
		||||
 limitations under the License.
 | 
			
		||||
-->
 | 
			
		||||
<!--  
 | 
			
		||||
 This is the Solr schema file. This file should be named "schema.xml" and
 | 
			
		||||
 should be in the conf directory under the solr home
 | 
			
		||||
 (i.e. ./solr/conf/schema.xml by default) 
 | 
			
		||||
 or located where the classloader for the Solr webapp can find it.
 | 
			
		||||
 | 
			
		||||
 This example schema is the recommended starting point for users.
 | 
			
		||||
 It should be kept correct and concise, usable out-of-the-box.
 | 
			
		||||
 | 
			
		||||
 For more information, on how to customize this file, please see
 | 
			
		||||
 http://wiki.apache.org/solr/SchemaXml
 | 
			
		||||
 | 
			
		||||
 PERFORMANCE NOTE: this schema includes many optional features and should not
 | 
			
		||||
 be used for benchmarking.  To improve performance one could
 | 
			
		||||
  - set stored="false" for all fields possible (esp large fields) when you
 | 
			
		||||
    only need to search on the field but don't need to return the original
 | 
			
		||||
    value.
 | 
			
		||||
  - set indexed="false" if you don't need to search on the field, but only
 | 
			
		||||
    return the field as a result of searching on other indexed fields.
 | 
			
		||||
  - remove all unneeded copyField statements
 | 
			
		||||
  - for best index size and searching performance, set "index" to false
 | 
			
		||||
    for all general text fields, use copyField to copy them to the
 | 
			
		||||
    catchall "text" field, and use that for searching.
 | 
			
		||||
  - For maximum indexing performance, use the StreamingUpdateSolrServer
 | 
			
		||||
    java client.
 | 
			
		||||
  - Remember to run the JVM in server mode, and use a higher logging level
 | 
			
		||||
    that avoids logging every request
 | 
			
		||||
-->
 | 
			
		||||
<schema name="sunspot" version="1.0">
 | 
			
		||||
  <types>
 | 
			
		||||
    <!-- field type definitions. The "name" attribute is
 | 
			
		||||
       just a label to be used by field definitions.  The "class"
 | 
			
		||||
       attribute and any other attributes determine the real
 | 
			
		||||
       behavior of the fieldType.
 | 
			
		||||
         Class names starting with "solr" refer to java classes in the
 | 
			
		||||
       org.apache.solr.analysis package.
 | 
			
		||||
    -->
 | 
			
		||||
    <!-- *** This fieldType is used by Sunspot! *** -->
 | 
			
		||||
    <fieldType name="string" class="solr.StrField" omitNorms="true"/>
 | 
			
		||||
    <!-- *** This fieldType is used by Sunspot! *** -->
 | 
			
		||||
    <fieldType name="tdouble" class="solr.TrieDoubleField" omitNorms="true"/>
 | 
			
		||||
    <!-- *** This fieldType is used by Sunspot! *** -->
 | 
			
		||||
    <fieldType name="rand" class="solr.RandomSortField" omitNorms="true"/>
 | 
			
		||||
    <!-- *** This fieldType is used by Sunspot! *** -->
 | 
			
		||||
    <fieldType name="text" class="solr.TextField" omitNorms="false">
 | 
			
		||||
      <analyzer>
 | 
			
		||||
      <tokenizer class="solr.CJKTokenizerFactory"/>
 | 
			
		||||
        <filter class="solr.StandardFilterFactory"/>
 | 
			
		||||
        <filter class="solr.LowerCaseFilterFactory"/>
 | 
			
		||||
        <filter class="solr.NGramFilterFactory" minGramSize="2" maxGramSize="15"/>
 | 
			
		||||
      </analyzer>
 | 
			
		||||
 | 
			
		||||
      <analyzer type="query">
 | 
			
		||||
        <tokenizer class="solr.StandardTokenizerFactory"/>
 | 
			
		||||
      <filter class="solr.StandardFilterFactory"/>
 | 
			
		||||
      <filter class="solr.LowerCaseFilterFactory"/>
 | 
			
		||||
      </analyzer>
 | 
			
		||||
    </fieldType>
 | 
			
		||||
    <!-- *** This fieldType is used by Sunspot! *** -->
 | 
			
		||||
    <fieldType name="boolean" class="solr.BoolField" omitNorms="true"/>
 | 
			
		||||
    <!-- *** This fieldType is used by Sunspot! *** -->
 | 
			
		||||
    <fieldType name="date" class="solr.DateField" omitNorms="true"/>
 | 
			
		||||
    <!-- *** This fieldType is used by Sunspot! *** -->
 | 
			
		||||
    <fieldType name="sdouble" class="solr.SortableDoubleField" omitNorms="true"/>
 | 
			
		||||
    <!-- *** This fieldType is used by Sunspot! *** -->
 | 
			
		||||
    <fieldType name="sfloat" class="solr.SortableFloatField" omitNorms="true"/>
 | 
			
		||||
    <!-- *** This fieldType is used by Sunspot! *** -->
 | 
			
		||||
    <fieldType name="sint" class="solr.SortableIntField" omitNorms="true"/>
 | 
			
		||||
    <!-- *** This fieldType is used by Sunspot! *** -->
 | 
			
		||||
    <fieldType name="slong" class="solr.SortableLongField" omitNorms="true"/>
 | 
			
		||||
    <!-- *** This fieldType is used by Sunspot! *** -->
 | 
			
		||||
    <fieldType name="tint" class="solr.TrieIntField" omitNorms="true"/>
 | 
			
		||||
    <!-- *** This fieldType is used by Sunspot! *** -->
 | 
			
		||||
    <fieldType name="tfloat" class="solr.TrieFloatField" omitNorms="true"/>
 | 
			
		||||
    <!-- *** This fieldType is used by Sunspot! *** -->
 | 
			
		||||
    <fieldType name="tdate" class="solr.TrieDateField" omitNorms="true"/>
 | 
			
		||||
  </types>
 | 
			
		||||
  <fields>
 | 
			
		||||
    <!-- Valid attributes for fields:
 | 
			
		||||
     name: mandatory - the name for the field
 | 
			
		||||
     type: mandatory - the name of a previously defined type from the 
 | 
			
		||||
       <types> section
 | 
			
		||||
     indexed: true if this field should be indexed (searchable or sortable)
 | 
			
		||||
     stored: true if this field should be retrievable
 | 
			
		||||
     compressed: [false] if this field should be stored using gzip compression
 | 
			
		||||
       (this will only apply if the field type is compressable; among
 | 
			
		||||
       the standard field types, only TextField and StrField are)
 | 
			
		||||
     multiValued: true if this field may contain multiple values per document
 | 
			
		||||
     omitNorms: (expert) set to true to omit the norms associated with
 | 
			
		||||
       this field (this disables length normalization and index-time
 | 
			
		||||
       boosting for the field, and saves some memory).  Only full-text
 | 
			
		||||
       fields or fields that need an index-time boost need norms.
 | 
			
		||||
     termVectors: [false] set to true to store the term vector for a
 | 
			
		||||
       given field.
 | 
			
		||||
       When using MoreLikeThis, fields used for similarity should be
 | 
			
		||||
       stored for best performance.
 | 
			
		||||
     termPositions: Store position information with the term vector.  
 | 
			
		||||
       This will increase storage costs.
 | 
			
		||||
     termOffsets: Store offset information with the term vector. This 
 | 
			
		||||
       will increase storage costs.
 | 
			
		||||
     default: a value that should be used if no value is specified
 | 
			
		||||
       when adding a document.
 | 
			
		||||
   -->
 | 
			
		||||
    <!-- *** This field is used by Sunspot! *** -->
 | 
			
		||||
    <field name="id" stored="true" type="string" multiValued="false" indexed="true"/>
 | 
			
		||||
    <!-- *** This field is used by Sunspot! *** -->
 | 
			
		||||
    <field name="type" stored="false" type="string" multiValued="true" indexed="true"/>
 | 
			
		||||
    <!-- *** This field is used by Sunspot! *** -->
 | 
			
		||||
    <field name="class_name" stored="false" type="string" multiValued="false" indexed="true"/>
 | 
			
		||||
    <!-- *** This field is used by Sunspot! *** -->
 | 
			
		||||
    <field name="text" stored="false" type="string" multiValued="true" indexed="true"/>
 | 
			
		||||
    <!-- *** This field is used by Sunspot! *** -->
 | 
			
		||||
    <field name="lat" stored="true" type="tdouble" multiValued="false" indexed="true"/>
 | 
			
		||||
    <!-- *** This field is used by Sunspot! *** -->
 | 
			
		||||
    <field name="lng" stored="true" type="tdouble" multiValued="false" indexed="true"/>
 | 
			
		||||
    <!-- *** This dynamicField is used by Sunspot! *** -->
 | 
			
		||||
    <dynamicField name="random_*" stored="false" type="rand" multiValued="false" indexed="true"/>
 | 
			
		||||
    <!-- *** This dynamicField is used by Sunspot! *** -->
 | 
			
		||||
    <dynamicField name="_local*" stored="false" type="tdouble" multiValued="false" indexed="true"/>
 | 
			
		||||
    <!-- *** This dynamicField is used by Sunspot! *** -->
 | 
			
		||||
    <dynamicField name="*_text" stored="false" type="text" multiValued="true" indexed="true"/>
 | 
			
		||||
    <!-- *** This dynamicField is used by Sunspot! *** -->
 | 
			
		||||
    <dynamicField name="*_texts" stored="true" type="text" multiValued="true" indexed="true"/>
 | 
			
		||||
    <!-- *** This dynamicField is used by Sunspot! *** -->
 | 
			
		||||
    <dynamicField name="*_b" stored="false" type="boolean" multiValued="false" indexed="true"/>
 | 
			
		||||
    <!-- *** This dynamicField is used by Sunspot! *** -->
 | 
			
		||||
    <dynamicField name="*_bm" stored="false" type="boolean" multiValued="true" indexed="true"/>
 | 
			
		||||
    <!-- *** This dynamicField is used by Sunspot! *** -->
 | 
			
		||||
    <dynamicField name="*_bs" stored="true" type="boolean" multiValued="false" indexed="true"/>
 | 
			
		||||
    <!-- *** This dynamicField is used by Sunspot! *** -->
 | 
			
		||||
    <dynamicField name="*_bms" stored="true" type="boolean" multiValued="true" indexed="true"/>
 | 
			
		||||
    <!-- *** This dynamicField is used by Sunspot! *** -->
 | 
			
		||||
    <dynamicField name="*_d" stored="false" type="date" multiValued="false" indexed="true"/>
 | 
			
		||||
    <!-- *** This dynamicField is used by Sunspot! *** -->
 | 
			
		||||
    <dynamicField name="*_dm" stored="false" type="date" multiValued="true" indexed="true"/>
 | 
			
		||||
    <!-- *** This dynamicField is used by Sunspot! *** -->
 | 
			
		||||
    <dynamicField name="*_ds" stored="true" type="date" multiValued="false" indexed="true"/>
 | 
			
		||||
    <!-- *** This dynamicField is used by Sunspot! *** -->
 | 
			
		||||
    <dynamicField name="*_dms" stored="true" type="date" multiValued="true" indexed="true"/>
 | 
			
		||||
    <!-- *** This dynamicField is used by Sunspot! *** -->
 | 
			
		||||
    <dynamicField name="*_e" stored="false" type="sdouble" multiValued="false" indexed="true"/>
 | 
			
		||||
    <!-- *** This dynamicField is used by Sunspot! *** -->
 | 
			
		||||
    <dynamicField name="*_em" stored="false" type="sdouble" multiValued="true" indexed="true"/>
 | 
			
		||||
    <!-- *** This dynamicField is used by Sunspot! *** -->
 | 
			
		||||
    <dynamicField name="*_es" stored="true" type="sdouble" multiValued="false" indexed="true"/>
 | 
			
		||||
    <!-- *** This dynamicField is used by Sunspot! *** -->
 | 
			
		||||
    <dynamicField name="*_ems" stored="true" type="sdouble" multiValued="true" indexed="true"/>
 | 
			
		||||
    <!-- *** This dynamicField is used by Sunspot! *** -->
 | 
			
		||||
    <dynamicField name="*_f" stored="false" type="sfloat" multiValued="false" indexed="true"/>
 | 
			
		||||
    <!-- *** This dynamicField is used by Sunspot! *** -->
 | 
			
		||||
    <dynamicField name="*_fm" stored="false" type="sfloat" multiValued="true" indexed="true"/>
 | 
			
		||||
    <!-- *** This dynamicField is used by Sunspot! *** -->
 | 
			
		||||
    <dynamicField name="*_fs" stored="true" type="sfloat" multiValued="false" indexed="true"/>
 | 
			
		||||
    <!-- *** This dynamicField is used by Sunspot! *** -->
 | 
			
		||||
    <dynamicField name="*_fms" stored="true" type="sfloat" multiValued="true" indexed="true"/>
 | 
			
		||||
    <!-- *** This dynamicField is used by Sunspot! *** -->
 | 
			
		||||
    <dynamicField name="*_i" stored="false" type="sint" multiValued="false" indexed="true"/>
 | 
			
		||||
    <!-- *** This dynamicField is used by Sunspot! *** -->
 | 
			
		||||
    <dynamicField name="*_im" stored="false" type="sint" multiValued="true" indexed="true"/>
 | 
			
		||||
    <!-- *** This dynamicField is used by Sunspot! *** -->
 | 
			
		||||
    <dynamicField name="*_is" stored="true" type="sint" multiValued="false" indexed="true"/>
 | 
			
		||||
    <!-- *** This dynamicField is used by Sunspot! *** -->
 | 
			
		||||
    <dynamicField name="*_ims" stored="true" type="sint" multiValued="true" indexed="true"/>
 | 
			
		||||
    <!-- *** This dynamicField is used by Sunspot! *** -->
 | 
			
		||||
    <dynamicField name="*_l" stored="false" type="slong" multiValued="false" indexed="true"/>
 | 
			
		||||
    <!-- *** This dynamicField is used by Sunspot! *** -->
 | 
			
		||||
    <dynamicField name="*_lm" stored="false" type="slong" multiValued="true" indexed="true"/>
 | 
			
		||||
    <!-- *** This dynamicField is used by Sunspot! *** -->
 | 
			
		||||
    <dynamicField name="*_ls" stored="true" type="slong" multiValued="false" indexed="true"/>
 | 
			
		||||
    <!-- *** This dynamicField is used by Sunspot! *** -->
 | 
			
		||||
    <dynamicField name="*_lms" stored="true" type="slong" multiValued="true" indexed="true"/>
 | 
			
		||||
    <!-- *** This dynamicField is used by Sunspot! *** -->
 | 
			
		||||
    <dynamicField name="*_s" stored="false" type="string" multiValued="false" indexed="true"/>
 | 
			
		||||
    <!-- *** This dynamicField is used by Sunspot! *** -->
 | 
			
		||||
    <dynamicField name="*_sm" stored="false" type="string" multiValued="true" indexed="true"/>
 | 
			
		||||
    <!-- *** This dynamicField is used by Sunspot! *** -->
 | 
			
		||||
    <dynamicField name="*_ss" stored="true" type="string" multiValued="false" indexed="true"/>
 | 
			
		||||
    <!-- *** This dynamicField is used by Sunspot! *** -->
 | 
			
		||||
    <dynamicField name="*_sms" stored="true" type="string" multiValued="true" indexed="true"/>
 | 
			
		||||
    <!-- *** This dynamicField is used by Sunspot! *** -->
 | 
			
		||||
    <dynamicField name="*_it" stored="false" type="tint" multiValued="false" indexed="true"/>
 | 
			
		||||
    <!-- *** This dynamicField is used by Sunspot! *** -->
 | 
			
		||||
    <dynamicField name="*_itm" stored="false" type="tint" multiValued="true" indexed="true"/>
 | 
			
		||||
    <!-- *** This dynamicField is used by Sunspot! *** -->
 | 
			
		||||
    <dynamicField name="*_its" stored="true" type="tint" multiValued="false" indexed="true"/>
 | 
			
		||||
    <!-- *** This dynamicField is used by Sunspot! *** -->
 | 
			
		||||
    <dynamicField name="*_itms" stored="true" type="tint" multiValued="true" indexed="true"/>
 | 
			
		||||
    <!-- *** This dynamicField is used by Sunspot! *** -->
 | 
			
		||||
    <dynamicField name="*_ft" stored="false" type="tfloat" multiValued="false" indexed="true"/>
 | 
			
		||||
    <!-- *** This dynamicField is used by Sunspot! *** -->
 | 
			
		||||
    <dynamicField name="*_ftm" stored="false" type="tfloat" multiValued="true" indexed="true"/>
 | 
			
		||||
    <!-- *** This dynamicField is used by Sunspot! *** -->
 | 
			
		||||
    <dynamicField name="*_fts" stored="true" type="tfloat" multiValued="false" indexed="true"/>
 | 
			
		||||
    <!-- *** This dynamicField is used by Sunspot! *** -->
 | 
			
		||||
    <dynamicField name="*_ftms" stored="true" type="tfloat" multiValued="true" indexed="true"/>
 | 
			
		||||
    <!-- *** This dynamicField is used by Sunspot! *** -->
 | 
			
		||||
    <dynamicField name="*_dt" stored="false" type="tdate" multiValued="false" indexed="true"/>
 | 
			
		||||
    <!-- *** This dynamicField is used by Sunspot! *** -->
 | 
			
		||||
    <dynamicField name="*_dtm" stored="false" type="tdate" multiValued="true" indexed="true"/>
 | 
			
		||||
    <!-- *** This dynamicField is used by Sunspot! *** -->
 | 
			
		||||
    <dynamicField name="*_dts" stored="true" type="tdate" multiValued="false" indexed="true"/>
 | 
			
		||||
    <!-- *** This dynamicField is used by Sunspot! *** -->
 | 
			
		||||
    <dynamicField name="*_dtms" stored="true" type="tdate" multiValued="true" indexed="true"/>
 | 
			
		||||
    <!-- *** This dynamicField is used by Sunspot! *** -->
 | 
			
		||||
    <dynamicField name="*_textv" stored="false" termVectors="true" type="text" multiValued="true" indexed="true"/>
 | 
			
		||||
    <!-- *** This dynamicField is used by Sunspot! *** -->
 | 
			
		||||
    <dynamicField name="*_textsv" stored="true" termVectors="true" type="text" multiValued="true" indexed="true"/>
 | 
			
		||||
    <!-- *** This dynamicField is used by Sunspot! *** -->
 | 
			
		||||
    <dynamicField name="*_et" stored="false" termVectors="true" type="tdouble" multiValued="false" indexed="true"/>
 | 
			
		||||
    <!-- *** This dynamicField is used by Sunspot! *** -->
 | 
			
		||||
    <dynamicField name="*_etm" stored="false" termVectors="true" type="tdouble" multiValued="true" indexed="true"/>
 | 
			
		||||
    <!-- *** This dynamicField is used by Sunspot! *** -->
 | 
			
		||||
    <dynamicField name="*_ets" stored="true" termVectors="true" type="tdouble" multiValued="false" indexed="true"/>
 | 
			
		||||
    <!-- *** This dynamicField is used by Sunspot! *** -->
 | 
			
		||||
    <dynamicField name="*_etms" stored="true" termVectors="true" type="tdouble" multiValued="true" indexed="true"/>
 | 
			
		||||
  </fields>
 | 
			
		||||
  <!-- Field to use to determine and enforce document uniqueness. 
 | 
			
		||||
      Unless this field is marked with required="false", it will be a required field
 | 
			
		||||
   -->
 | 
			
		||||
  <uniqueKey>id</uniqueKey>
 | 
			
		||||
  <!-- field for the QueryParser to use when an explicit fieldname is absent -->
 | 
			
		||||
  <defaultSearchField>text</defaultSearchField>
 | 
			
		||||
  <!-- SolrQueryParser configuration: defaultOperator="AND|OR" -->
 | 
			
		||||
  <solrQueryParser defaultOperator="AND"/>
 | 
			
		||||
  <!-- copyField commands copy one field to another at the time a document
 | 
			
		||||
        is added to the index.  It's used either to index the same field differently,
 | 
			
		||||
        or to add multiple fields to the same field for easier/faster searching.  -->
 | 
			
		||||
</schema>
 | 
			
		||||
| 
						 | 
				
			
			@ -0,0 +1,24 @@
 | 
			
		|||
# Licensed to the Apache Software Foundation (ASF) under one or more
 | 
			
		||||
# contributor license agreements.  See the NOTICE file distributed with
 | 
			
		||||
# this work for additional information regarding copyright ownership.
 | 
			
		||||
# The ASF licenses this file to You under the Apache License, Version 2.0
 | 
			
		||||
# (the "License"); you may not use this file except in compliance with
 | 
			
		||||
# the License.  You may obtain a copy of the License at
 | 
			
		||||
#
 | 
			
		||||
#     http://www.apache.org/licenses/LICENSE-2.0
 | 
			
		||||
#
 | 
			
		||||
# Unless required by applicable law or agreed to in writing, software
 | 
			
		||||
# distributed under the License is distributed on an "AS IS" BASIS,
 | 
			
		||||
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 | 
			
		||||
# See the License for the specific language governing permissions and
 | 
			
		||||
# limitations under the License.
 | 
			
		||||
 | 
			
		||||
user=
 | 
			
		||||
solr_hostname=localhost
 | 
			
		||||
solr_port=8983
 | 
			
		||||
rsyncd_port=18983
 | 
			
		||||
data_dir=
 | 
			
		||||
webapp_name=solr
 | 
			
		||||
master_host=
 | 
			
		||||
master_data_dir=
 | 
			
		||||
master_status_dir=
 | 
			
		||||
| 
						 | 
				
			
			@ -0,0 +1,938 @@
 | 
			
		|||
<?xml version="1.0" encoding="UTF-8"?>
 | 
			
		||||
<!--
 | 
			
		||||
 Licensed to the Apache Software Foundation (ASF) under one or more
 | 
			
		||||
 contributor license agreements.  See the NOTICE file distributed with
 | 
			
		||||
 this work for additional information regarding copyright ownership.
 | 
			
		||||
 The ASF licenses this file to You under the Apache License, Version 2.0
 | 
			
		||||
 (the "License"); you may not use this file except in compliance with
 | 
			
		||||
 the License.  You may obtain a copy of the License at
 | 
			
		||||
 | 
			
		||||
     http://www.apache.org/licenses/LICENSE-2.0
 | 
			
		||||
 | 
			
		||||
 Unless required by applicable law or agreed to in writing, software
 | 
			
		||||
 distributed under the License is distributed on an "AS IS" BASIS,
 | 
			
		||||
 WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 | 
			
		||||
 See the License for the specific language governing permissions and
 | 
			
		||||
 limitations under the License.
 | 
			
		||||
-->
 | 
			
		||||
<!-- 
 | 
			
		||||
     For more details about configurations options that may appear in this 
 | 
			
		||||
     file, see http://wiki.apache.org/solr/SolrConfigXml.
 | 
			
		||||
 | 
			
		||||
     Specifically, the Solr Config can support XInclude, which may make it easier to manage
 | 
			
		||||
     the configuration.  See https://issues.apache.org/jira/browse/SOLR-1167
 | 
			
		||||
-->
 | 
			
		||||
<config>
 | 
			
		||||
  <!-- Set this to 'false' if you want solr to continue working after it has 
 | 
			
		||||
       encountered an severe configuration error.  In a production environment, 
 | 
			
		||||
       you may want solr to keep working even if one handler is mis-configured.
 | 
			
		||||
 | 
			
		||||
       You may also set this to false using by setting the system property:
 | 
			
		||||
         -Dsolr.abortOnConfigurationError=false
 | 
			
		||||
     -->
 | 
			
		||||
  <abortOnConfigurationError>${solr.abortOnConfigurationError:true}</abortOnConfigurationError>
 | 
			
		||||
  <!-- lib directives can be used to instruct Solr to load an Jars identified
 | 
			
		||||
       and use them to resolve any "plugins" specified in your solrconfig.xml or
 | 
			
		||||
       schema.xml (ie: Analyzers, Request Handlers, etc...).
 | 
			
		||||
 | 
			
		||||
       All directories and paths are resolved relative the instanceDir.
 | 
			
		||||
 | 
			
		||||
       If a "./lib" directory exists in your instanceDir, all files found in it
 | 
			
		||||
       are included as if you had used the following syntax...
 | 
			
		||||
       
 | 
			
		||||
              <lib dir="./lib" />
 | 
			
		||||
    -->
 | 
			
		||||
  <!-- A dir option by itself adds any files found in the directory to the
 | 
			
		||||
       classpath, this is useful for including all jars in a directory.
 | 
			
		||||
    -->
 | 
			
		||||
  <lib dir="../../contrib/extraction/lib"/>
 | 
			
		||||
  <!-- When a regex is specified in addition to a directory, only the files in that
 | 
			
		||||
       directory which completely match the regex (anchored on both ends)
 | 
			
		||||
       will be included.
 | 
			
		||||
    -->
 | 
			
		||||
  <lib dir="../../dist/" regex="apache-solr-cell-\d.*\.jar"/>
 | 
			
		||||
  <lib dir="../../dist/" regex="apache-solr-clustering-\d.*\.jar"/>
 | 
			
		||||
  <!-- If a dir option (with or without a regex) is used and nothing is found
 | 
			
		||||
       that matches, it will be ignored
 | 
			
		||||
    -->
 | 
			
		||||
  <lib dir="../../contrib/clustering/lib/downloads/"/>
 | 
			
		||||
  <lib dir="../../contrib/clustering/lib/"/>
 | 
			
		||||
  <lib dir="/total/crap/dir/ignored"/>
 | 
			
		||||
  <!-- an exact path can be used to specify a specific file.  This will cause
 | 
			
		||||
       a serious error to be logged if it can't be loaded.
 | 
			
		||||
  <lib path="../a-jar-that-does-not-exist.jar" /> 
 | 
			
		||||
  -->
 | 
			
		||||
  <!-- Used to specify an alternate directory to hold all index data
 | 
			
		||||
       other than the default ./data under the Solr home.
 | 
			
		||||
       If replication is in use, this should match the replication configuration. -->
 | 
			
		||||
  <dataDir>${solr.data.dir:./solr/data}</dataDir>
 | 
			
		||||
  <!-- WARNING: this <indexDefaults> section only provides defaults for index writers
 | 
			
		||||
       in general. See also the <mainIndex> section after that when changing parameters
 | 
			
		||||
       for Solr's main Lucene index. -->
 | 
			
		||||
  <indexDefaults>
 | 
			
		||||
    <!-- Values here affect all index writers and act as a default unless overridden. -->
 | 
			
		||||
    <useCompoundFile>false</useCompoundFile>
 | 
			
		||||
    <mergeFactor>10</mergeFactor>
 | 
			
		||||
    <!-- If both ramBufferSizeMB and maxBufferedDocs is set, then Lucene will flush
 | 
			
		||||
     based on whichever limit is hit first.  -->
 | 
			
		||||
    <!--<maxBufferedDocs>1000</maxBufferedDocs>-->
 | 
			
		||||
    <!-- Sets the amount of RAM that may be used by Lucene indexing
 | 
			
		||||
      for buffering added documents and deletions before they are
 | 
			
		||||
      flushed to the Directory.  -->
 | 
			
		||||
    <ramBufferSizeMB>32</ramBufferSizeMB>
 | 
			
		||||
    <!-- <maxMergeDocs>2147483647</maxMergeDocs> -->
 | 
			
		||||
    <maxFieldLength>10000</maxFieldLength>
 | 
			
		||||
    <writeLockTimeout>1000</writeLockTimeout>
 | 
			
		||||
    <commitLockTimeout>10000</commitLockTimeout>
 | 
			
		||||
    <!--
 | 
			
		||||
     Expert: Turn on Lucene's auto commit capability.  This causes intermediate
 | 
			
		||||
     segment flushes to write a new lucene index descriptor, enabling it to be
 | 
			
		||||
     opened by an external IndexReader.  This can greatly slow down indexing
 | 
			
		||||
     speed.  NOTE: Despite the name, this value does not have any relation to
 | 
			
		||||
     Solr's autoCommit functionality
 | 
			
		||||
     -->
 | 
			
		||||
    <!--<luceneAutoCommit>false</luceneAutoCommit>-->
 | 
			
		||||
    <!--
 | 
			
		||||
     Expert: The Merge Policy in Lucene controls how merging is handled by
 | 
			
		||||
     Lucene.  The default in 2.3 is the LogByteSizeMergePolicy, previous
 | 
			
		||||
     versions used LogDocMergePolicy.
 | 
			
		||||
 | 
			
		||||
     LogByteSizeMergePolicy chooses segments to merge based on their size.  The
 | 
			
		||||
     Lucene 2.2 default, LogDocMergePolicy chose when to merge based on number
 | 
			
		||||
     of documents
 | 
			
		||||
 | 
			
		||||
     Other implementations of MergePolicy must have a no-argument constructor
 | 
			
		||||
     -->
 | 
			
		||||
    <!--<mergePolicy class="org.apache.lucene.index.LogByteSizeMergePolicy"/>-->
 | 
			
		||||
    <!--
 | 
			
		||||
     Expert:
 | 
			
		||||
     The Merge Scheduler in Lucene controls how merges are performed.  The
 | 
			
		||||
     ConcurrentMergeScheduler (Lucene 2.3 default) can perform merges in the
 | 
			
		||||
     background using separate threads.  The SerialMergeScheduler (Lucene 2.2
 | 
			
		||||
     default) does not.
 | 
			
		||||
     -->
 | 
			
		||||
    <!--<mergeScheduler class="org.apache.lucene.index.ConcurrentMergeScheduler"/>-->
 | 
			
		||||
    <!--
 | 
			
		||||
      This option specifies which Lucene LockFactory implementation to use.
 | 
			
		||||
      
 | 
			
		||||
      single = SingleInstanceLockFactory - suggested for a read-only index
 | 
			
		||||
               or when there is no possibility of another process trying
 | 
			
		||||
               to modify the index.
 | 
			
		||||
      native = NativeFSLockFactory  - uses OS native file locking
 | 
			
		||||
      simple = SimpleFSLockFactory  - uses a plain file for locking
 | 
			
		||||
 | 
			
		||||
      (For backwards compatibility with Solr 1.2, 'simple' is the default
 | 
			
		||||
       if not specified.)
 | 
			
		||||
    -->
 | 
			
		||||
    <lockType>native</lockType>
 | 
			
		||||
    <!--
 | 
			
		||||
     Expert:
 | 
			
		||||
    Controls how often Lucene loads terms into memory -->
 | 
			
		||||
    <!--<termIndexInterval>256</termIndexInterval>-->
 | 
			
		||||
  </indexDefaults>
 | 
			
		||||
  <mainIndex>
 | 
			
		||||
    <!-- options specific to the main on-disk lucene index -->
 | 
			
		||||
    <useCompoundFile>false</useCompoundFile>
 | 
			
		||||
    <ramBufferSizeMB>32</ramBufferSizeMB>
 | 
			
		||||
    <mergeFactor>10</mergeFactor>
 | 
			
		||||
    <!-- Deprecated -->
 | 
			
		||||
    <!--<maxBufferedDocs>1000</maxBufferedDocs>-->
 | 
			
		||||
    <!--<maxMergeDocs>2147483647</maxMergeDocs>-->
 | 
			
		||||
    <!-- inherit from indexDefaults <maxFieldLength>10000</maxFieldLength> -->
 | 
			
		||||
    <!-- If true, unlock any held write or commit locks on startup. 
 | 
			
		||||
         This defeats the locking mechanism that allows multiple
 | 
			
		||||
         processes to safely access a lucene index, and should be
 | 
			
		||||
         used with care.
 | 
			
		||||
         This is not needed if lock type is 'none' or 'single'
 | 
			
		||||
     -->
 | 
			
		||||
    <unlockOnStartup>false</unlockOnStartup>
 | 
			
		||||
    <!-- If true, IndexReaders will be reopened (often more efficient) instead
 | 
			
		||||
         of closed and then opened.  -->
 | 
			
		||||
    <reopenReaders>true</reopenReaders>
 | 
			
		||||
    <!--
 | 
			
		||||
     Expert:
 | 
			
		||||
    Controls how often Lucene loads terms into memory.  Default is 128 and is likely good for most everyone. -->
 | 
			
		||||
    <!--<termIndexInterval>256</termIndexInterval>-->
 | 
			
		||||
    <!--
 | 
			
		||||
        Custom deletion policies can specified here. The class must
 | 
			
		||||
        implement org.apache.lucene.index.IndexDeletionPolicy.
 | 
			
		||||
 | 
			
		||||
        http://lucene.apache.org/java/2_3_2/api/org/apache/lucene/index/IndexDeletionPolicy.html
 | 
			
		||||
 | 
			
		||||
        The standard Solr IndexDeletionPolicy implementation supports deleting
 | 
			
		||||
        index commit points on number of commits, age of commit point and
 | 
			
		||||
        optimized status.
 | 
			
		||||
 | 
			
		||||
        The latest commit point should always be preserved regardless
 | 
			
		||||
        of the criteria.
 | 
			
		||||
    -->
 | 
			
		||||
    <deletionPolicy class="solr.SolrDeletionPolicy">
 | 
			
		||||
      <!-- The number of commit points to be kept -->
 | 
			
		||||
      <str name="maxCommitsToKeep">1</str>
 | 
			
		||||
      <!-- The number of optimized commit points to be kept -->
 | 
			
		||||
      <str name="maxOptimizedCommitsToKeep">0</str>
 | 
			
		||||
      <!--
 | 
			
		||||
          Delete all commit points once they have reached the given age.
 | 
			
		||||
          Supports DateMathParser syntax e.g.
 | 
			
		||||
          
 | 
			
		||||
          <str name="maxCommitAge">30MINUTES</str>
 | 
			
		||||
          <str name="maxCommitAge">1DAY</str>
 | 
			
		||||
      -->
 | 
			
		||||
    </deletionPolicy>
 | 
			
		||||
    <!--  To aid in advanced debugging, you may turn on IndexWriter debug logging.
 | 
			
		||||
      Setting to true will set the file that the underlying Lucene IndexWriter
 | 
			
		||||
      will write its debug infostream to.  -->
 | 
			
		||||
    <infoStream file="INFOSTREAM.txt">false</infoStream>
 | 
			
		||||
  </mainIndex>
 | 
			
		||||
  <!--	Enables JMX if and only if an existing MBeanServer is found, use this
 | 
			
		||||
    if you want to configure JMX through JVM parameters. Remove this to disable
 | 
			
		||||
    exposing Solr configuration and statistics to JMX.
 | 
			
		||||
 | 
			
		||||
		If you want to connect to a particular server, specify the agentId
 | 
			
		||||
		e.g. <jmx agentId="myAgent" />
 | 
			
		||||
 | 
			
		||||
		If you want to start a new MBeanServer, specify the serviceUrl
 | 
			
		||||
		e.g <jmx serviceUrl="service:jmx:rmi:///jndi/rmi://localhost:9999/solr"/>
 | 
			
		||||
 | 
			
		||||
		For more details see http://wiki.apache.org/solr/SolrJmx
 | 
			
		||||
  -->
 | 
			
		||||
  <jmx/>
 | 
			
		||||
  <!-- the default high-performance update handler -->
 | 
			
		||||
  <updateHandler class="solr.DirectUpdateHandler2">
 | 
			
		||||
    <!-- A prefix of "solr." for class names is an alias that
 | 
			
		||||
         causes solr to search appropriate packages, including
 | 
			
		||||
         org.apache.solr.(search|update|request|core|analysis)
 | 
			
		||||
     -->
 | 
			
		||||
    <!-- Perform a <commit/> automatically under certain conditions:
 | 
			
		||||
         maxDocs - number of updates since last commit is greater than this
 | 
			
		||||
         maxTime - oldest uncommited update (in ms) is this long ago
 | 
			
		||||
         Instead of enabling autoCommit, consider using "commitWithin"
 | 
			
		||||
         when adding documents. http://wiki.apache.org/solr/UpdateXmlMessages
 | 
			
		||||
    <autoCommit> 
 | 
			
		||||
      <maxDocs>10000</maxDocs>
 | 
			
		||||
      <maxTime>1000</maxTime> 
 | 
			
		||||
    </autoCommit>
 | 
			
		||||
    -->
 | 
			
		||||
    <!-- The RunExecutableListener executes an external command from a
 | 
			
		||||
      hook such as postCommit or postOptimize.
 | 
			
		||||
         exe - the name of the executable to run
 | 
			
		||||
         dir - dir to use as the current working directory. default="."
 | 
			
		||||
         wait - the calling thread waits until the executable returns. default="true"
 | 
			
		||||
         args - the arguments to pass to the program.  default=nothing
 | 
			
		||||
         env - environment variables to set.  default=nothing
 | 
			
		||||
      -->
 | 
			
		||||
    <!-- A postCommit event is fired after every commit or optimize command
 | 
			
		||||
    <listener event="postCommit" class="solr.RunExecutableListener">
 | 
			
		||||
      <str name="exe">solr/bin/snapshooter</str>
 | 
			
		||||
      <str name="dir">.</str>
 | 
			
		||||
      <bool name="wait">true</bool>
 | 
			
		||||
      <arr name="args"> <str>arg1</str> <str>arg2</str> </arr>
 | 
			
		||||
      <arr name="env"> <str>MYVAR=val1</str> </arr>
 | 
			
		||||
    </listener>
 | 
			
		||||
    -->
 | 
			
		||||
    <!-- A postOptimize event is fired only after every optimize command
 | 
			
		||||
    <listener event="postOptimize" class="solr.RunExecutableListener">
 | 
			
		||||
      <str name="exe">snapshooter</str>
 | 
			
		||||
      <str name="dir">solr/bin</str>
 | 
			
		||||
      <bool name="wait">true</bool>
 | 
			
		||||
    </listener>
 | 
			
		||||
    -->
 | 
			
		||||
  </updateHandler>
 | 
			
		||||
  <!-- Use the following format to specify a custom IndexReaderFactory - allows for alternate
 | 
			
		||||
       IndexReader implementations.
 | 
			
		||||
 | 
			
		||||
       ** Experimental Feature **
 | 
			
		||||
       Please note - Using a custom IndexReaderFactory may prevent certain other features
 | 
			
		||||
       from working. The API to IndexReaderFactory may change without warning or may even
 | 
			
		||||
       be removed from future releases if the problems cannot be resolved.
 | 
			
		||||
 | 
			
		||||
       ** Features that may not work with custom IndexReaderFactory **
 | 
			
		||||
       The ReplicationHandler assumes a disk-resident index. Using a custom
 | 
			
		||||
       IndexReader implementation may cause incompatibility with ReplicationHandler and
 | 
			
		||||
       may cause replication to not work correctly. See SOLR-1366 for details.
 | 
			
		||||
 | 
			
		||||
  <indexReaderFactory name="IndexReaderFactory" class="package.class">
 | 
			
		||||
    Parameters as required by the implementation
 | 
			
		||||
  </indexReaderFactory >
 | 
			
		||||
  -->
 | 
			
		||||
  <!-- To set the termInfosIndexDivisor, do this: -->
 | 
			
		||||
  <!--<indexReaderFactory name="IndexReaderFactory" class="org.apache.solr.core.StandardIndexReaderFactory">
 | 
			
		||||
    <int name="termInfosIndexDivisor">12</int>
 | 
			
		||||
  </indexReaderFactory >-->
 | 
			
		||||
  <query>
 | 
			
		||||
    <!-- Maximum number of clauses in a boolean query... in the past, this affected
 | 
			
		||||
        range or prefix queries that expanded to big boolean queries - built in Solr 
 | 
			
		||||
        query parsers no longer create queries with this limitation. 
 | 
			
		||||
        An exception is thrown if exceeded.  -->
 | 
			
		||||
    <maxBooleanClauses>1024</maxBooleanClauses>
 | 
			
		||||
    <!-- There are two implementations of cache available for Solr,
 | 
			
		||||
         LRUCache, based on a synchronized LinkedHashMap, and
 | 
			
		||||
         FastLRUCache, based on a ConcurrentHashMap.  FastLRUCache has faster gets
 | 
			
		||||
         and slower puts in single threaded operation and thus is generally faster
 | 
			
		||||
         than LRUCache when the hit ratio of the cache is high (> 75%), and may be
 | 
			
		||||
         faster under other scenarios on multi-cpu systems. -->
 | 
			
		||||
    <!-- Cache used by SolrIndexSearcher for filters (DocSets),
 | 
			
		||||
         unordered sets of *all* documents that match a query.
 | 
			
		||||
         When a new searcher is opened, its caches may be prepopulated
 | 
			
		||||
         or "autowarmed" using data from caches in the old searcher.
 | 
			
		||||
         autowarmCount is the number of items to prepopulate.  For LRUCache,
 | 
			
		||||
         the autowarmed items will be the most recently accessed items.
 | 
			
		||||
       Parameters:
 | 
			
		||||
         class - the SolrCache implementation LRUCache or FastLRUCache
 | 
			
		||||
         size - the maximum number of entries in the cache
 | 
			
		||||
         initialSize - the initial capacity (number of entries) of
 | 
			
		||||
           the cache.  (seel java.util.HashMap)
 | 
			
		||||
         autowarmCount - the number of entries to prepopulate from
 | 
			
		||||
           and old cache.
 | 
			
		||||
         -->
 | 
			
		||||
    <filterCache class="solr.FastLRUCache" size="512" initialSize="512" autowarmCount="0"/>
 | 
			
		||||
    <!-- Cache used to hold field values that are quickly accessible
 | 
			
		||||
         by document id.  The fieldValueCache is created by default
 | 
			
		||||
         even if not configured here.
 | 
			
		||||
      <fieldValueCache
 | 
			
		||||
        class="solr.FastLRUCache"
 | 
			
		||||
        size="512"
 | 
			
		||||
        autowarmCount="128"
 | 
			
		||||
        showItems="32"
 | 
			
		||||
      />
 | 
			
		||||
    -->
 | 
			
		||||
    <!-- queryResultCache caches results of searches - ordered lists of
 | 
			
		||||
         document ids (DocList) based on a query, a sort, and the range
 | 
			
		||||
         of documents requested.  -->
 | 
			
		||||
    <queryResultCache class="solr.LRUCache" size="512" initialSize="512" autowarmCount="0"/>
 | 
			
		||||
    <!-- documentCache caches Lucene Document objects (the stored fields for each document).
 | 
			
		||||
       Since Lucene internal document ids are transient, this cache will not be autowarmed.  -->
 | 
			
		||||
    <documentCache class="solr.LRUCache" size="512" initialSize="512" autowarmCount="0"/>
 | 
			
		||||
    <!-- If true, stored fields that are not requested will be loaded lazily.
 | 
			
		||||
      This can result in a significant speed improvement if the usual case is to
 | 
			
		||||
      not load all stored fields, especially if the skipped fields are large
 | 
			
		||||
      compressed text fields.
 | 
			
		||||
    -->
 | 
			
		||||
    <enableLazyFieldLoading>true</enableLazyFieldLoading>
 | 
			
		||||
    <!-- Example of a generic cache.  These caches may be accessed by name
 | 
			
		||||
         through SolrIndexSearcher.getCache(),cacheLookup(), and cacheInsert().
 | 
			
		||||
         The purpose is to enable easy caching of user/application level data.
 | 
			
		||||
         The regenerator argument should be specified as an implementation
 | 
			
		||||
         of solr.search.CacheRegenerator if autowarming is desired.  -->
 | 
			
		||||
    <!--
 | 
			
		||||
    <cache name="myUserCache"
 | 
			
		||||
      class="solr.LRUCache"
 | 
			
		||||
      size="4096"
 | 
			
		||||
      initialSize="1024"
 | 
			
		||||
      autowarmCount="1024"
 | 
			
		||||
      regenerator="org.mycompany.mypackage.MyRegenerator"
 | 
			
		||||
      />
 | 
			
		||||
    -->
 | 
			
		||||
    <!-- An optimization that attempts to use a filter to satisfy a search.
 | 
			
		||||
         If the requested sort does not include score, then the filterCache
 | 
			
		||||
         will be checked for a filter matching the query. If found, the filter
 | 
			
		||||
         will be used as the source of document ids, and then the sort will be
 | 
			
		||||
         applied to that.
 | 
			
		||||
    <useFilterForSortedQuery>true</useFilterForSortedQuery>
 | 
			
		||||
   -->
 | 
			
		||||
    <!-- An optimization for use with the queryResultCache.  When a search
 | 
			
		||||
         is requested, a superset of the requested number of document ids
 | 
			
		||||
         are collected.  For example, if a search for a particular query
 | 
			
		||||
         requests matching documents 10 through 19, and queryWindowSize is 50,
 | 
			
		||||
         then documents 0 through 49 will be collected and cached.  Any further
 | 
			
		||||
         requests in that range can be satisfied via the cache.  -->
 | 
			
		||||
    <queryResultWindowSize>20</queryResultWindowSize>
 | 
			
		||||
    <!-- Maximum number of documents to cache for any entry in the
 | 
			
		||||
         queryResultCache. -->
 | 
			
		||||
    <queryResultMaxDocsCached>200</queryResultMaxDocsCached>
 | 
			
		||||
    <!-- a newSearcher event is fired whenever a new searcher is being prepared
 | 
			
		||||
      and there is a current searcher handling requests (aka registered).
 | 
			
		||||
      It can be used to prime certain caches to prevent long request times for
 | 
			
		||||
      certain requests.
 | 
			
		||||
    -->
 | 
			
		||||
    <!-- QuerySenderListener takes an array of NamedList and executes a
 | 
			
		||||
         local query request for each NamedList in sequence. -->
 | 
			
		||||
    <listener event="newSearcher" class="solr.QuerySenderListener">
 | 
			
		||||
      <arr name="queries">
 | 
			
		||||
        <!--
 | 
			
		||||
        <lst> <str name="q">solr</str> <str name="start">0</str> <str name="rows">10</str> </lst>
 | 
			
		||||
        <lst> <str name="q">rocks</str> <str name="start">0</str> <str name="rows">10</str> </lst>
 | 
			
		||||
        <lst><str name="q">static newSearcher warming query from solrconfig.xml</str></lst>
 | 
			
		||||
        -->
 | 
			
		||||
      </arr>
 | 
			
		||||
    </listener>
 | 
			
		||||
    <!-- a firstSearcher event is fired whenever a new searcher is being
 | 
			
		||||
         prepared but there is no current registered searcher to handle
 | 
			
		||||
         requests or to gain autowarming data from. -->
 | 
			
		||||
    <listener event="firstSearcher" class="solr.QuerySenderListener">
 | 
			
		||||
      <arr name="queries">
 | 
			
		||||
        <lst>
 | 
			
		||||
          <str name="q">solr rocks</str>
 | 
			
		||||
          <str name="start">0</str>
 | 
			
		||||
          <str name="rows">10</str>
 | 
			
		||||
        </lst>
 | 
			
		||||
        <lst>
 | 
			
		||||
          <str name="q">static firstSearcher warming query from solrconfig.xml</str>
 | 
			
		||||
        </lst>
 | 
			
		||||
      </arr>
 | 
			
		||||
    </listener>
 | 
			
		||||
    <!-- If a search request comes in and there is no current registered searcher,
 | 
			
		||||
         then immediately register the still warming searcher and use it.  If
 | 
			
		||||
         "false" then all requests will block until the first searcher is done
 | 
			
		||||
         warming. -->
 | 
			
		||||
    <useColdSearcher>false</useColdSearcher>
 | 
			
		||||
    <!-- Maximum number of searchers that may be warming in the background
 | 
			
		||||
      concurrently.  An error is returned if this limit is exceeded. Recommend
 | 
			
		||||
      1-2 for read-only slaves, higher for masters w/o cache warming. -->
 | 
			
		||||
    <maxWarmingSearchers>2</maxWarmingSearchers>
 | 
			
		||||
  </query>
 | 
			
		||||
  <!-- 
 | 
			
		||||
    Let the dispatch filter handler /select?qt=XXX
 | 
			
		||||
    handleSelect=true will use consistent error handling for /select and /update
 | 
			
		||||
    handleSelect=false will use solr1.1 style error formatting
 | 
			
		||||
    -->
 | 
			
		||||
  <requestDispatcher handleSelect="true">
 | 
			
		||||
    <!--Make sure your system has some authentication before enabling remote streaming!  -->
 | 
			
		||||
    <requestParsers enableRemoteStreaming="true" multipartUploadLimitInKB="2048000"/>
 | 
			
		||||
    <!-- Set HTTP caching related parameters (for proxy caches and clients).
 | 
			
		||||
          
 | 
			
		||||
         To get the behaviour of Solr 1.2 (ie: no caching related headers)
 | 
			
		||||
         use the never304="true" option and do not specify a value for
 | 
			
		||||
         <cacheControl>
 | 
			
		||||
    -->
 | 
			
		||||
    <!-- <httpCaching never304="true"> -->
 | 
			
		||||
    <httpCaching lastModifiedFrom="openTime" etagSeed="Solr">
 | 
			
		||||
      <!-- lastModFrom="openTime" is the default, the Last-Modified value
 | 
			
		||||
            (and validation against If-Modified-Since requests) will all be
 | 
			
		||||
            relative to when the current Searcher was opened.
 | 
			
		||||
            You can change it to lastModFrom="dirLastMod" if you want the
 | 
			
		||||
            value to exactly corrispond to when the physical index was last
 | 
			
		||||
            modified.
 | 
			
		||||
 | 
			
		||||
            etagSeed="..." is an option you can change to force the ETag
 | 
			
		||||
            header (and validation against If-None-Match requests) to be
 | 
			
		||||
            differnet even if the index has not changed (ie: when making
 | 
			
		||||
            significant changes to your config file)
 | 
			
		||||
 | 
			
		||||
            lastModifiedFrom and etagSeed are both ignored if you use the
 | 
			
		||||
            never304="true" option.
 | 
			
		||||
       -->
 | 
			
		||||
      <!-- If you include a <cacheControl> directive, it will be used to
 | 
			
		||||
            generate a Cache-Control header, as well as an Expires header
 | 
			
		||||
            if the value contains "max-age="
 | 
			
		||||
 | 
			
		||||
            By default, no Cache-Control header is generated.
 | 
			
		||||
 | 
			
		||||
            You can use the <cacheControl> option even if you have set
 | 
			
		||||
            never304="true"
 | 
			
		||||
       -->
 | 
			
		||||
      <!-- <cacheControl>max-age=30, public</cacheControl> -->
 | 
			
		||||
    </httpCaching>
 | 
			
		||||
  </requestDispatcher>
 | 
			
		||||
  <!-- requestHandler plugins... incoming queries will be dispatched to the
 | 
			
		||||
     correct handler based on the path or the qt (query type) param.
 | 
			
		||||
     Names starting with a '/' are accessed with the a path equal to the 
 | 
			
		||||
     registered name.  Names without a leading '/' are accessed with:
 | 
			
		||||
      http://host/app/select?qt=name
 | 
			
		||||
     If no qt is defined, the requestHandler that declares default="true"
 | 
			
		||||
     will be used.
 | 
			
		||||
  -->
 | 
			
		||||
  <requestHandler name="standard" class="solr.SearchHandler" default="true">
 | 
			
		||||
    <!-- default values for query parameters -->
 | 
			
		||||
    <lst name="defaults">
 | 
			
		||||
      <str name="echoParams">explicit</str>
 | 
			
		||||
      <!--
 | 
			
		||||
       <int name="rows">10</int>
 | 
			
		||||
       <str name="fl">*</str>
 | 
			
		||||
       <str name="version">2.1</str>
 | 
			
		||||
        -->
 | 
			
		||||
    </lst>
 | 
			
		||||
  </requestHandler>
 | 
			
		||||
  <!-- Please refer to http://wiki.apache.org/solr/SolrReplication for details on configuring replication -->
 | 
			
		||||
  <!-- remove the <lst name="master"> section if this is just a slave -->
 | 
			
		||||
  <!-- remove  the <lst name="slave"> section if this is just a master -->
 | 
			
		||||
  <!--
 | 
			
		||||
<requestHandler name="/replication" class="solr.ReplicationHandler" >
 | 
			
		||||
    <lst name="master">
 | 
			
		||||
      <str name="replicateAfter">commit</str>
 | 
			
		||||
      <str name="replicateAfter">startup</str>
 | 
			
		||||
      <str name="confFiles">schema.xml,stopwords.txt</str>
 | 
			
		||||
    </lst>
 | 
			
		||||
    <lst name="slave">
 | 
			
		||||
      <str name="masterUrl">http://localhost:8983/solr/replication</str>
 | 
			
		||||
      <str name="pollInterval">00:00:60</str>
 | 
			
		||||
    </lst>
 | 
			
		||||
</requestHandler>-->
 | 
			
		||||
  <!-- DisMaxRequestHandler allows easy searching across multiple fields
 | 
			
		||||
       for simple user-entered phrases.  It's implementation is now
 | 
			
		||||
       just the standard SearchHandler with a default query type
 | 
			
		||||
       of "dismax". 
 | 
			
		||||
       see http://wiki.apache.org/solr/DisMaxRequestHandler
 | 
			
		||||
   -->
 | 
			
		||||
  <requestHandler name="dismax" class="solr.SearchHandler">
 | 
			
		||||
    <lst name="defaults">
 | 
			
		||||
      <str name="defType">dismax</str>
 | 
			
		||||
      <str name="echoParams">explicit</str>
 | 
			
		||||
      <float name="tie">0.01</float>
 | 
			
		||||
      <str name="qf">
 | 
			
		||||
        text^0.5 features^1.0 name^1.2 sku^1.5 id^10.0 manu^1.1 cat^1.4
 | 
			
		||||
     </str>
 | 
			
		||||
      <str name="pf">
 | 
			
		||||
        text^0.2 features^1.1 name^1.5 manu^1.4 manu_exact^1.9
 | 
			
		||||
     </str>
 | 
			
		||||
      <str name="bf">
 | 
			
		||||
        popularity^0.5 recip(price,1,1000,1000)^0.3
 | 
			
		||||
     </str>
 | 
			
		||||
      <str name="fl">
 | 
			
		||||
        id,name,price,score
 | 
			
		||||
     </str>
 | 
			
		||||
      <str name="mm">
 | 
			
		||||
        2<-1 5<-2 6<90%
 | 
			
		||||
     </str>
 | 
			
		||||
      <int name="ps">100</int>
 | 
			
		||||
      <str name="q.alt">*:*</str>
 | 
			
		||||
      <!-- example highlighter config, enable per-query with hl=true -->
 | 
			
		||||
      <str name="hl.fl">text features name</str>
 | 
			
		||||
      <!-- for this field, we want no fragmenting, just highlighting -->
 | 
			
		||||
      <str name="f.name.hl.fragsize">0</str>
 | 
			
		||||
      <!-- instructs Solr to return the field itself if no query terms are
 | 
			
		||||
          found -->
 | 
			
		||||
      <str name="f.name.hl.alternateField">name</str>
 | 
			
		||||
      <str name="f.text.hl.fragmenter">regex</str>
 | 
			
		||||
      <!-- defined below -->
 | 
			
		||||
    </lst>
 | 
			
		||||
  </requestHandler>
 | 
			
		||||
  <!-- Note how you can register the same handler multiple times with
 | 
			
		||||
       different names (and different init parameters)
 | 
			
		||||
    -->
 | 
			
		||||
  <requestHandler name="partitioned" class="solr.SearchHandler">
 | 
			
		||||
    <lst name="defaults">
 | 
			
		||||
      <str name="defType">dismax</str>
 | 
			
		||||
      <str name="echoParams">explicit</str>
 | 
			
		||||
      <str name="qf">text^0.5 features^1.0 name^1.2 sku^1.5 id^10.0</str>
 | 
			
		||||
      <str name="mm">2<-1 5<-2 6<90%</str>
 | 
			
		||||
      <!-- This is an example of using Date Math to specify a constantly
 | 
			
		||||
          moving date range in a config...
 | 
			
		||||
       -->
 | 
			
		||||
      <str name="bq">incubationdate_dt:[* TO NOW/DAY-1MONTH]^2.2</str>
 | 
			
		||||
    </lst>
 | 
			
		||||
    <!-- In addition to defaults, "appends" params can be specified
 | 
			
		||||
         to identify values which should be appended to the list of
 | 
			
		||||
         multi-val params from the query (or the existing "defaults").
 | 
			
		||||
 | 
			
		||||
         In this example, the param "fq=instock:true" will be appended to
 | 
			
		||||
         any query time fq params the user may specify, as a mechanism for
 | 
			
		||||
         partitioning the index, independent of any user selected filtering
 | 
			
		||||
         that may also be desired (perhaps as a result of faceted searching).
 | 
			
		||||
 | 
			
		||||
         NOTE: there is *absolutely* nothing a client can do to prevent these
 | 
			
		||||
         "appends" values from being used, so don't use this mechanism
 | 
			
		||||
         unless you are sure you always want it.
 | 
			
		||||
      -->
 | 
			
		||||
    <lst name="appends">
 | 
			
		||||
      <str name="fq">inStock:true</str>
 | 
			
		||||
    </lst>
 | 
			
		||||
    <!-- "invariants" are a way of letting the Solr maintainer lock down
 | 
			
		||||
         the options available to Solr clients.  Any params values
 | 
			
		||||
         specified here are used regardless of what values may be specified
 | 
			
		||||
         in either the query, the "defaults", or the "appends" params.
 | 
			
		||||
 | 
			
		||||
         In this example, the facet.field and facet.query params are fixed,
 | 
			
		||||
         limiting the facets clients can use.  Faceting is not turned on by
 | 
			
		||||
         default - but if the client does specify facet=true in the request,
 | 
			
		||||
         these are the only facets they will be able to see counts for;
 | 
			
		||||
         regardless of what other facet.field or facet.query params they
 | 
			
		||||
         may specify.
 | 
			
		||||
 | 
			
		||||
         NOTE: there is *absolutely* nothing a client can do to prevent these
 | 
			
		||||
         "invariants" values from being used, so don't use this mechanism
 | 
			
		||||
         unless you are sure you always want it.
 | 
			
		||||
      -->
 | 
			
		||||
    <lst name="invariants">
 | 
			
		||||
      <str name="facet.field">cat</str>
 | 
			
		||||
      <str name="facet.field">manu_exact</str>
 | 
			
		||||
      <str name="facet.query">price:[* TO 500]</str>
 | 
			
		||||
      <str name="facet.query">price:[500 TO *]</str>
 | 
			
		||||
    </lst>
 | 
			
		||||
  </requestHandler>
 | 
			
		||||
 | 
			
		||||
  <searchComponent name="query"     class="org.apache.solr.handler.component.QueryComponent" />
 | 
			
		||||
 | 
			
		||||
  <searchComponent name="debug"     class="org.apache.solr.handler.component.DebugComponent" />
 | 
			
		||||
  <!--
 | 
			
		||||
   Search components are registered to SolrCore and used by Search Handlers
 | 
			
		||||
   
 | 
			
		||||
   By default, the following components are avaliable:
 | 
			
		||||
    
 | 
			
		||||
   <searchComponent name="query"     class="org.apache.solr.handler.component.QueryComponent" />
 | 
			
		||||
   <searchComponent name="facet"     class="org.apache.solr.handler.component.FacetComponent" />
 | 
			
		||||
   <searchComponent name="mlt"       class="org.apache.solr.handler.component.MoreLikeThisComponent" />
 | 
			
		||||
   <searchComponent name="highlight" class="org.apache.solr.handler.component.HighlightComponent" />
 | 
			
		||||
   <searchComponent name="stats"     class="org.apache.solr.handler.component.StatsComponent" />
 | 
			
		||||
   <searchComponent name="debug"     class="org.apache.solr.handler.component.DebugComponent" />
 | 
			
		||||
   
 | 
			
		||||
   Default configuration in a requestHandler would look like:
 | 
			
		||||
    <arr name="components">
 | 
			
		||||
      <str>query</str>
 | 
			
		||||
      <str>facet</str>
 | 
			
		||||
      <str>mlt</str>
 | 
			
		||||
      <str>highlight</str>
 | 
			
		||||
      <str>stats</str>
 | 
			
		||||
      <str>debug</str>
 | 
			
		||||
    </arr>
 | 
			
		||||
 | 
			
		||||
    If you register a searchComponent to one of the standard names, that will be used instead.
 | 
			
		||||
    To insert components before or after the 'standard' components, use:
 | 
			
		||||
    
 | 
			
		||||
    <arr name="first-components">
 | 
			
		||||
      <str>myFirstComponentName</str>
 | 
			
		||||
    </arr>
 | 
			
		||||
    
 | 
			
		||||
    <arr name="last-components">
 | 
			
		||||
      <str>myLastComponentName</str>
 | 
			
		||||
    </arr>
 | 
			
		||||
  -->
 | 
			
		||||
  <!-- The spell check component can return a list of alternative spelling
 | 
			
		||||
  suggestions.  -->
 | 
			
		||||
  <searchComponent name="spellcheck" class="solr.SpellCheckComponent">
 | 
			
		||||
    <str name="queryAnalyzerFieldType">textSpell</str>
 | 
			
		||||
    <lst name="spellchecker">
 | 
			
		||||
      <str name="name">default</str>
 | 
			
		||||
      <str name="field">name</str>
 | 
			
		||||
      <str name="spellcheckIndexDir">./spellchecker</str>
 | 
			
		||||
    </lst>
 | 
			
		||||
    <!-- a spellchecker that uses a different distance measure
 | 
			
		||||
    <lst name="spellchecker">
 | 
			
		||||
      <str name="name">jarowinkler</str>
 | 
			
		||||
      <str name="field">spell</str>
 | 
			
		||||
      <str name="distanceMeasure">org.apache.lucene.search.spell.JaroWinklerDistance</str>
 | 
			
		||||
      <str name="spellcheckIndexDir">./spellchecker2</str>
 | 
			
		||||
    </lst>
 | 
			
		||||
     -->
 | 
			
		||||
    <!-- a file based spell checker
 | 
			
		||||
    <lst name="spellchecker">
 | 
			
		||||
      <str name="classname">solr.FileBasedSpellChecker</str>
 | 
			
		||||
      <str name="name">file</str>
 | 
			
		||||
      <str name="sourceLocation">spellings.txt</str>
 | 
			
		||||
      <str name="characterEncoding">UTF-8</str>
 | 
			
		||||
      <str name="spellcheckIndexDir">./spellcheckerFile</str>
 | 
			
		||||
    </lst>
 | 
			
		||||
    -->
 | 
			
		||||
  </searchComponent>
 | 
			
		||||
  <!-- A request handler utilizing the spellcheck component.  
 | 
			
		||||
  #############################################################################
 | 
			
		||||
  NOTE: This is purely as an example.  The whole purpose of the
 | 
			
		||||
  SpellCheckComponent is to hook it into the request handler that handles (i.e.
 | 
			
		||||
  the standard or dismax SearchHandler) queries such that a separate request is
 | 
			
		||||
  not needed to get suggestions.
 | 
			
		||||
 | 
			
		||||
  IN OTHER WORDS, THERE IS REALLY GOOD CHANCE THE SETUP BELOW IS NOT WHAT YOU
 | 
			
		||||
  WANT FOR YOUR PRODUCTION SYSTEM!
 | 
			
		||||
  #############################################################################
 | 
			
		||||
  -->
 | 
			
		||||
  <requestHandler name="/spell" class="solr.SearchHandler" lazy="true">
 | 
			
		||||
    <lst name="defaults">
 | 
			
		||||
      <!-- omp = Only More Popular -->
 | 
			
		||||
      <str name="spellcheck.onlyMorePopular">false</str>
 | 
			
		||||
      <!-- exr = Extended Results -->
 | 
			
		||||
      <str name="spellcheck.extendedResults">false</str>
 | 
			
		||||
      <!--  The number of suggestions to return -->
 | 
			
		||||
      <str name="spellcheck.count">1</str>
 | 
			
		||||
    </lst>
 | 
			
		||||
    <arr name="last-components">
 | 
			
		||||
      <str>spellcheck</str>
 | 
			
		||||
    </arr>
 | 
			
		||||
  </requestHandler>
 | 
			
		||||
  <searchComponent name="tvComponent" class="org.apache.solr.handler.component.TermVectorComponent"/>
 | 
			
		||||
  <!-- A Req Handler for working with the tvComponent.  This is purely as an example.
 | 
			
		||||
  You will likely want to add the component to your already specified request handlers. -->
 | 
			
		||||
  <requestHandler name="tvrh" class="org.apache.solr.handler.component.SearchHandler">
 | 
			
		||||
    <lst name="defaults">
 | 
			
		||||
      <bool name="tv">true</bool>
 | 
			
		||||
    </lst>
 | 
			
		||||
    <arr name="last-components">
 | 
			
		||||
      <str>tvComponent</str>
 | 
			
		||||
    </arr>
 | 
			
		||||
  </requestHandler>
 | 
			
		||||
  <!-- Clustering Component
 | 
			
		||||
       http://wiki.apache.org/solr/ClusteringComponent
 | 
			
		||||
       This relies on third party jars which are not included in the release.
 | 
			
		||||
       To use this component (and the "/clustering" handler)
 | 
			
		||||
       Those jars will need to be downloaded, and you'll need to set the
 | 
			
		||||
       solr.cluster.enabled system property when running solr...
 | 
			
		||||
          java -Dsolr.clustering.enabled=true -jar start.jar
 | 
			
		||||
    -->
 | 
			
		||||
  <searchComponent name="clusteringComponent" enable="${solr.clustering.enabled:false}" class="org.apache.solr.handler.clustering.ClusteringComponent">
 | 
			
		||||
    <!-- Declare an engine -->
 | 
			
		||||
    <lst name="engine">
 | 
			
		||||
      <!-- The name, only one can be named "default" -->
 | 
			
		||||
      <str name="name">default</str>
 | 
			
		||||
      <!-- 
 | 
			
		||||
           Class name of Carrot2 clustering algorithm. Currently available algorithms are:
 | 
			
		||||
           
 | 
			
		||||
           * org.carrot2.clustering.lingo.LingoClusteringAlgorithm
 | 
			
		||||
           * org.carrot2.clustering.stc.STCClusteringAlgorithm
 | 
			
		||||
           
 | 
			
		||||
           See http://project.carrot2.org/algorithms.html for the algorithm's characteristics.
 | 
			
		||||
        -->
 | 
			
		||||
      <str name="carrot.algorithm">org.carrot2.clustering.lingo.LingoClusteringAlgorithm</str>
 | 
			
		||||
      <!-- 
 | 
			
		||||
           Overriding values for Carrot2 default algorithm attributes. For a description
 | 
			
		||||
           of all available attributes, see: http://download.carrot2.org/stable/manual/#chapter.components.
 | 
			
		||||
           Use attribute key as name attribute of str elements below. These can be further
 | 
			
		||||
           overridden for individual requests by specifying attribute key as request
 | 
			
		||||
           parameter name and attribute value as parameter value.
 | 
			
		||||
        -->
 | 
			
		||||
      <str name="LingoClusteringAlgorithm.desiredClusterCountBase">20</str>
 | 
			
		||||
    </lst>
 | 
			
		||||
    <lst name="engine">
 | 
			
		||||
      <str name="name">stc</str>
 | 
			
		||||
      <str name="carrot.algorithm">org.carrot2.clustering.stc.STCClusteringAlgorithm</str>
 | 
			
		||||
    </lst>
 | 
			
		||||
  </searchComponent>
 | 
			
		||||
  <requestHandler name="/clustering" enable="${solr.clustering.enabled:false}" class="solr.SearchHandler">
 | 
			
		||||
    <lst name="defaults">
 | 
			
		||||
      <bool name="clustering">true</bool>
 | 
			
		||||
      <str name="clustering.engine">default</str>
 | 
			
		||||
      <bool name="clustering.results">true</bool>
 | 
			
		||||
      <!-- The title field -->
 | 
			
		||||
      <str name="carrot.title">name</str>
 | 
			
		||||
      <str name="carrot.url">id</str>
 | 
			
		||||
      <!-- The field to cluster on -->
 | 
			
		||||
      <str name="carrot.snippet">features</str>
 | 
			
		||||
      <!-- produce summaries -->
 | 
			
		||||
      <bool name="carrot.produceSummary">true</bool>
 | 
			
		||||
      <!-- the maximum number of labels per cluster -->
 | 
			
		||||
      <!--<int name="carrot.numDescriptions">5</int>-->
 | 
			
		||||
      <!-- produce sub clusters -->
 | 
			
		||||
      <bool name="carrot.outputSubClusters">false</bool>
 | 
			
		||||
    </lst>
 | 
			
		||||
    <arr name="last-components">
 | 
			
		||||
      <str>clusteringComponent</str>
 | 
			
		||||
    </arr>
 | 
			
		||||
  </requestHandler>
 | 
			
		||||
  <!-- Solr Cell: http://wiki.apache.org/solr/ExtractingRequestHandler -->
 | 
			
		||||
  <requestHandler name="/update/extract" class="org.apache.solr.handler.extraction.ExtractingRequestHandler" startup="lazy">
 | 
			
		||||
    <lst name="defaults">
 | 
			
		||||
      <!-- All the main content goes into "text"... if you need to return
 | 
			
		||||
           the extracted text or do highlighting, use a stored field. -->
 | 
			
		||||
      <str name="fmap.content">text</str>
 | 
			
		||||
      <str name="lowernames">true</str>
 | 
			
		||||
      <str name="uprefix">ignored_</str>
 | 
			
		||||
      <!-- capture link hrefs but ignore div attributes -->
 | 
			
		||||
      <str name="captureAttr">true</str>
 | 
			
		||||
      <str name="fmap.a">links</str>
 | 
			
		||||
      <str name="fmap.div">ignored_</str>
 | 
			
		||||
    </lst>
 | 
			
		||||
  </requestHandler>
 | 
			
		||||
  <!-- A component to return terms and document frequency of those terms.
 | 
			
		||||
       This component does not yet support distributed search. -->
 | 
			
		||||
  <searchComponent name="termsComponent" class="org.apache.solr.handler.component.TermsComponent"/>
 | 
			
		||||
  <requestHandler name="/terms" class="org.apache.solr.handler.component.SearchHandler">
 | 
			
		||||
    <lst name="defaults">
 | 
			
		||||
      <bool name="terms">true</bool>
 | 
			
		||||
    </lst>
 | 
			
		||||
    <arr name="components">
 | 
			
		||||
      <str>termsComponent</str>
 | 
			
		||||
    </arr>
 | 
			
		||||
  </requestHandler>
 | 
			
		||||
  <!-- a search component that enables you to configure the top results for
 | 
			
		||||
       a given query regardless of the normal lucene scoring.-->
 | 
			
		||||
  <searchComponent name="elevator" class="solr.QueryElevationComponent">
 | 
			
		||||
    <!-- pick a fieldType to analyze queries -->
 | 
			
		||||
    <str name="queryFieldType">string</str>
 | 
			
		||||
    <str name="config-file">elevate.xml</str>
 | 
			
		||||
  </searchComponent>
 | 
			
		||||
  <!-- a request handler utilizing the elevator component -->
 | 
			
		||||
  <requestHandler name="/elevate" class="solr.SearchHandler" startup="lazy">
 | 
			
		||||
    <lst name="defaults">
 | 
			
		||||
      <str name="echoParams">explicit</str>
 | 
			
		||||
    </lst>
 | 
			
		||||
    <arr name="last-components">
 | 
			
		||||
      <str>elevator</str>
 | 
			
		||||
    </arr>
 | 
			
		||||
  </requestHandler>
 | 
			
		||||
  <!-- Update request handler.  
 | 
			
		||||
 | 
			
		||||
       Note: Since solr1.1 requestHandlers requires a valid content type header if posted in
 | 
			
		||||
       the body. For example, curl now requires: -H 'Content-type:text/xml; charset=utf-8'
 | 
			
		||||
       The response format differs from solr1.1 formatting and returns a standard error code.
 | 
			
		||||
       To enable solr1.1 behavior, remove the /update handler or change its path
 | 
			
		||||
    -->
 | 
			
		||||
  <requestHandler name="/update" class="solr.XmlUpdateRequestHandler"/>
 | 
			
		||||
  <requestHandler name="/update/javabin" class="solr.BinaryUpdateRequestHandler"/>
 | 
			
		||||
  <!--
 | 
			
		||||
   Analysis request handler.  Since Solr 1.3.  Use to return how a document is analyzed.  Useful
 | 
			
		||||
   for debugging and as a token server for other types of applications.
 | 
			
		||||
 | 
			
		||||
   This is deprecated in favor of the improved DocumentAnalysisRequestHandler and FieldAnalysisRequestHandler
 | 
			
		||||
 | 
			
		||||
   <requestHandler name="/analysis" class="solr.AnalysisRequestHandler" />
 | 
			
		||||
   -->
 | 
			
		||||
  <!--
 | 
			
		||||
    An analysis handler that provides a breakdown of the analysis process of provided docuemnts. This handler expects a
 | 
			
		||||
    (single) content stream with the following format:
 | 
			
		||||
 | 
			
		||||
    <docs>
 | 
			
		||||
      <doc>
 | 
			
		||||
        <field name="id">1</field>
 | 
			
		||||
        <field name="name">The Name</field>
 | 
			
		||||
        <field name="text">The Text Value</field>
 | 
			
		||||
      <doc>
 | 
			
		||||
      <doc>...</doc>
 | 
			
		||||
      <doc>...</doc>
 | 
			
		||||
      ...
 | 
			
		||||
    </docs>
 | 
			
		||||
 | 
			
		||||
    Note: Each document must contain a field which serves as the unique key. This key is used in the returned
 | 
			
		||||
    response to assoicate an analysis breakdown to the analyzed document.
 | 
			
		||||
 | 
			
		||||
    Like the FieldAnalysisRequestHandler, this handler also supports query analysis by
 | 
			
		||||
    sending either an "analysis.query" or "q" request paraemter that holds the query text to be analyized. It also
 | 
			
		||||
    supports the "analysis.showmatch" parameter which when set to true, all field tokens that match the query
 | 
			
		||||
    tokens will be marked as a "match".
 | 
			
		||||
  -->
 | 
			
		||||
  <requestHandler name="/analysis/document" class="solr.DocumentAnalysisRequestHandler"/>
 | 
			
		||||
  <!--
 | 
			
		||||
    RequestHandler that provides much the same functionality as analysis.jsp. Provides the ability
 | 
			
		||||
    to specify multiple field types and field names in the same request and outputs index-time and
 | 
			
		||||
    query-time analysis for each of them.
 | 
			
		||||
 | 
			
		||||
    Request parameters are:
 | 
			
		||||
    analysis.fieldname - The field name whose analyzers are to be used
 | 
			
		||||
    analysis.fieldtype - The field type whose analyzers are to be used
 | 
			
		||||
    analysis.fieldvalue - The text for index-time analysis
 | 
			
		||||
    q (or analysis.q) - The text for query time analysis
 | 
			
		||||
    analysis.showmatch (true|false) - When set to true and when query analysis is performed, the produced
 | 
			
		||||
                                      tokens of the field value analysis will be marked as "matched" for every
 | 
			
		||||
                                      token that is produces by the query analysis
 | 
			
		||||
   -->
 | 
			
		||||
  <requestHandler name="/analysis/field" class="solr.FieldAnalysisRequestHandler"/>
 | 
			
		||||
  <!-- CSV update handler, loaded on demand -->
 | 
			
		||||
  <requestHandler name="/update/csv" class="solr.CSVRequestHandler" startup="lazy"/>
 | 
			
		||||
  <!-- 
 | 
			
		||||
   Admin Handlers - This will register all the standard admin RequestHandlers.  Adding 
 | 
			
		||||
   this single handler is equivalent to registering:
 | 
			
		||||
   
 | 
			
		||||
  <requestHandler name="/admin/luke"       class="org.apache.solr.handler.admin.LukeRequestHandler" />
 | 
			
		||||
  <requestHandler name="/admin/system"     class="org.apache.solr.handler.admin.SystemInfoHandler" />
 | 
			
		||||
  <requestHandler name="/admin/plugins"    class="org.apache.solr.handler.admin.PluginInfoHandler" />
 | 
			
		||||
  <requestHandler name="/admin/threads"    class="org.apache.solr.handler.admin.ThreadDumpHandler" />
 | 
			
		||||
  <requestHandler name="/admin/properties" class="org.apache.solr.handler.admin.PropertiesRequestHandler" />
 | 
			
		||||
  <requestHandler name="/admin/file"       class="org.apache.solr.handler.admin.ShowFileRequestHandler" >
 | 
			
		||||
  
 | 
			
		||||
  If you wish to hide files under ${solr.home}/conf, explicitly register the ShowFileRequestHandler using:
 | 
			
		||||
  <requestHandler name="/admin/file" class="org.apache.solr.handler.admin.ShowFileRequestHandler" >
 | 
			
		||||
    <lst name="invariants">
 | 
			
		||||
     <str name="hidden">synonyms.txt</str> 
 | 
			
		||||
     <str name="hidden">anotherfile.txt</str> 
 | 
			
		||||
    </lst>
 | 
			
		||||
  </requestHandler>
 | 
			
		||||
  -->
 | 
			
		||||
  <requestHandler name="/admin/" class="org.apache.solr.handler.admin.AdminHandlers"/>
 | 
			
		||||
  <!-- ping/healthcheck -->
 | 
			
		||||
  <requestHandler name="/admin/ping" class="PingRequestHandler">
 | 
			
		||||
    <lst name="defaults">
 | 
			
		||||
      <str name="qt">standard</str>
 | 
			
		||||
      <str name="q">solrpingquery</str>
 | 
			
		||||
      <str name="echoParams">all</str>
 | 
			
		||||
    </lst>
 | 
			
		||||
  </requestHandler>
 | 
			
		||||
  <!-- Echo the request contents back to the client -->
 | 
			
		||||
  <requestHandler name="/debug/dump" class="solr.DumpRequestHandler">
 | 
			
		||||
    <lst name="defaults">
 | 
			
		||||
      <str name="echoParams">explicit</str>
 | 
			
		||||
      <!-- for all params (including the default etc) use: 'all' -->
 | 
			
		||||
      <str name="echoHandler">true</str>
 | 
			
		||||
    </lst>
 | 
			
		||||
  </requestHandler>
 | 
			
		||||
  <highlighting>
 | 
			
		||||
    <!-- Configure the standard fragmenter -->
 | 
			
		||||
    <!-- This could most likely be commented out in the "default" case -->
 | 
			
		||||
    <fragmenter name="gap" class="org.apache.solr.highlight.GapFragmenter" default="true">
 | 
			
		||||
      <lst name="defaults">
 | 
			
		||||
        <int name="hl.fragsize">100</int>
 | 
			
		||||
      </lst>
 | 
			
		||||
    </fragmenter>
 | 
			
		||||
    <!-- A regular-expression-based fragmenter (f.i., for sentence extraction) -->
 | 
			
		||||
    <fragmenter name="regex" class="org.apache.solr.highlight.RegexFragmenter">
 | 
			
		||||
      <lst name="defaults">
 | 
			
		||||
        <!-- slightly smaller fragsizes work better because of slop -->
 | 
			
		||||
        <int name="hl.fragsize">70</int>
 | 
			
		||||
        <!-- allow 50% slop on fragment sizes -->
 | 
			
		||||
        <float name="hl.regex.slop">0.5</float>
 | 
			
		||||
        <!-- a basic sentence pattern -->
 | 
			
		||||
        <str name="hl.regex.pattern">[-\w ,/\n\"']{20,200}</str>
 | 
			
		||||
      </lst>
 | 
			
		||||
    </fragmenter>
 | 
			
		||||
    <!-- Configure the standard formatter -->
 | 
			
		||||
    <formatter name="html" class="org.apache.solr.highlight.HtmlFormatter" default="true">
 | 
			
		||||
      <lst name="defaults">
 | 
			
		||||
        <str name="hl.simple.pre"><![CDATA[<em>]]></str>
 | 
			
		||||
        <str name="hl.simple.post"><![CDATA[</em>]]></str>
 | 
			
		||||
      </lst>
 | 
			
		||||
    </formatter>
 | 
			
		||||
  </highlighting>
 | 
			
		||||
  <!-- An example dedup update processor that creates the "id" field on the fly
 | 
			
		||||
       based on the hash code of some other fields.  This example has overwriteDupes
 | 
			
		||||
       set to false since we are using the id field as the signatureField and Solr
 | 
			
		||||
       will maintain uniqueness based on that anyway. 
 | 
			
		||||
       
 | 
			
		||||
       You have to link the chain to an update handler above to use it ie:
 | 
			
		||||
         <requestHandler name="/update "class="solr.XmlUpdateRequestHandler">
 | 
			
		||||
           <lst name="defaults">
 | 
			
		||||
             <str name="update.processor">dedupe</str>
 | 
			
		||||
           </lst>
 | 
			
		||||
         </requestHandler>  
 | 
			
		||||
  -->
 | 
			
		||||
  <!--
 | 
			
		||||
  <updateRequestProcessorChain name="dedupe">
 | 
			
		||||
    <processor class="org.apache.solr.update.processor.SignatureUpdateProcessorFactory">
 | 
			
		||||
      <bool name="enabled">true</bool>
 | 
			
		||||
      <str name="signatureField">id</str>
 | 
			
		||||
      <bool name="overwriteDupes">false</bool>
 | 
			
		||||
      <str name="fields">name,features,cat</str>
 | 
			
		||||
      <str name="signatureClass">org.apache.solr.update.processor.Lookup3Signature</str>
 | 
			
		||||
    </processor>
 | 
			
		||||
    <processor class="solr.LogUpdateProcessorFactory" />
 | 
			
		||||
    <processor class="solr.RunUpdateProcessorFactory" />
 | 
			
		||||
  </updateRequestProcessorChain>
 | 
			
		||||
  -->
 | 
			
		||||
  <!-- queryResponseWriter plugins... query responses will be written using the
 | 
			
		||||
    writer specified by the 'wt' request parameter matching the name of a registered
 | 
			
		||||
    writer.
 | 
			
		||||
    The "default" writer is the default and will be used if 'wt' is not specified 
 | 
			
		||||
    in the request. XMLResponseWriter will be used if nothing is specified here.
 | 
			
		||||
    The json, python, and ruby writers are also available by default.
 | 
			
		||||
 | 
			
		||||
    <queryResponseWriter name="xml" class="org.apache.solr.request.XMLResponseWriter" default="true"/>
 | 
			
		||||
    <queryResponseWriter name="json" class="org.apache.solr.request.JSONResponseWriter"/>
 | 
			
		||||
    <queryResponseWriter name="python" class="org.apache.solr.request.PythonResponseWriter"/>
 | 
			
		||||
    <queryResponseWriter name="ruby" class="org.apache.solr.request.RubyResponseWriter"/>
 | 
			
		||||
    <queryResponseWriter name="php" class="org.apache.solr.request.PHPResponseWriter"/>
 | 
			
		||||
    <queryResponseWriter name="phps" class="org.apache.solr.request.PHPSerializedResponseWriter"/>
 | 
			
		||||
 | 
			
		||||
    <queryResponseWriter name="custom" class="com.example.MyResponseWriter"/>
 | 
			
		||||
  -->
 | 
			
		||||
  <!-- XSLT response writer transforms the XML output by any xslt file found
 | 
			
		||||
       in Solr's conf/xslt directory.  Changes to xslt files are checked for
 | 
			
		||||
       every xsltCacheLifetimeSeconds.  
 | 
			
		||||
   -->
 | 
			
		||||
  <queryResponseWriter name="xslt" class="org.apache.solr.request.XSLTResponseWriter">
 | 
			
		||||
    <int name="xsltCacheLifetimeSeconds">5</int>
 | 
			
		||||
  </queryResponseWriter>
 | 
			
		||||
  <!-- example of registering a query parser
 | 
			
		||||
  <queryParser name="lucene" class="org.apache.solr.search.LuceneQParserPlugin"/>
 | 
			
		||||
  -->
 | 
			
		||||
  <!-- example of registering a custom function parser 
 | 
			
		||||
  <valueSourceParser name="myfunc" class="com.mycompany.MyValueSourceParser" />
 | 
			
		||||
  -->
 | 
			
		||||
  <!-- config for the admin interface -->
 | 
			
		||||
  <admin>
 | 
			
		||||
    <defaultQuery>solr</defaultQuery>
 | 
			
		||||
    <!-- configure a healthcheck file for servers behind a loadbalancer
 | 
			
		||||
    <healthcheck type="file">server-enabled</healthcheck>
 | 
			
		||||
    -->
 | 
			
		||||
  </admin>
 | 
			
		||||
  <requestHandler class="solr.MoreLikeThisHandler" name="/mlt">
 | 
			
		||||
    <lst name="defaults">
 | 
			
		||||
      <str name="mlt.mintf">1</str>
 | 
			
		||||
      <str name="mlt.mindf">2</str>
 | 
			
		||||
    </lst>
 | 
			
		||||
  </requestHandler>
 | 
			
		||||
</config>
 | 
			
		||||
| 
						 | 
				
			
			@ -0,0 +1,2 @@
 | 
			
		|||
pizza
 | 
			
		||||
history
 | 
			
		||||
| 
						 | 
				
			
			@ -0,0 +1,58 @@
 | 
			
		|||
# Licensed to the Apache Software Foundation (ASF) under one or more
 | 
			
		||||
# contributor license agreements.  See the NOTICE file distributed with
 | 
			
		||||
# this work for additional information regarding copyright ownership.
 | 
			
		||||
# The ASF licenses this file to You under the Apache License, Version 2.0
 | 
			
		||||
# (the "License"); you may not use this file except in compliance with
 | 
			
		||||
# the License.  You may obtain a copy of the License at
 | 
			
		||||
#
 | 
			
		||||
#     http://www.apache.org/licenses/LICENSE-2.0
 | 
			
		||||
#
 | 
			
		||||
# Unless required by applicable law or agreed to in writing, software
 | 
			
		||||
# distributed under the License is distributed on an "AS IS" BASIS,
 | 
			
		||||
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 | 
			
		||||
# See the License for the specific language governing permissions and
 | 
			
		||||
# limitations under the License.
 | 
			
		||||
 | 
			
		||||
#-----------------------------------------------------------------------
 | 
			
		||||
# a couple of test stopwords to test that the words are really being
 | 
			
		||||
# configured from this file:
 | 
			
		||||
stopworda
 | 
			
		||||
stopwordb
 | 
			
		||||
 | 
			
		||||
#Standard english stop words taken from Lucene's StopAnalyzer
 | 
			
		||||
a
 | 
			
		||||
an
 | 
			
		||||
and
 | 
			
		||||
are
 | 
			
		||||
as
 | 
			
		||||
at
 | 
			
		||||
be
 | 
			
		||||
but
 | 
			
		||||
by
 | 
			
		||||
for
 | 
			
		||||
if
 | 
			
		||||
in
 | 
			
		||||
into
 | 
			
		||||
is
 | 
			
		||||
it
 | 
			
		||||
no
 | 
			
		||||
not
 | 
			
		||||
of
 | 
			
		||||
on
 | 
			
		||||
or
 | 
			
		||||
s
 | 
			
		||||
such
 | 
			
		||||
t
 | 
			
		||||
that
 | 
			
		||||
the
 | 
			
		||||
their
 | 
			
		||||
then
 | 
			
		||||
there
 | 
			
		||||
these
 | 
			
		||||
they
 | 
			
		||||
this
 | 
			
		||||
to
 | 
			
		||||
was
 | 
			
		||||
will
 | 
			
		||||
with
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -0,0 +1,31 @@
 | 
			
		|||
# The ASF licenses this file to You under the Apache License, Version 2.0
 | 
			
		||||
# (the "License"); you may not use this file except in compliance with
 | 
			
		||||
# the License.  You may obtain a copy of the License at
 | 
			
		||||
#
 | 
			
		||||
#     http://www.apache.org/licenses/LICENSE-2.0
 | 
			
		||||
#
 | 
			
		||||
# Unless required by applicable law or agreed to in writing, software
 | 
			
		||||
# distributed under the License is distributed on an "AS IS" BASIS,
 | 
			
		||||
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 | 
			
		||||
# See the License for the specific language governing permissions and
 | 
			
		||||
# limitations under the License.
 | 
			
		||||
 | 
			
		||||
#-----------------------------------------------------------------------
 | 
			
		||||
#some test synonym mappings unlikely to appear in real input text
 | 
			
		||||
aaa => aaaa
 | 
			
		||||
bbb => bbbb1 bbbb2
 | 
			
		||||
ccc => cccc1,cccc2
 | 
			
		||||
a\=>a => b\=>b
 | 
			
		||||
a\,a => b\,b
 | 
			
		||||
fooaaa,baraaa,bazaaa
 | 
			
		||||
 | 
			
		||||
# Some synonym groups specific to this example
 | 
			
		||||
GB,gib,gigabyte,gigabytes
 | 
			
		||||
MB,mib,megabyte,megabytes
 | 
			
		||||
Television, Televisions, TV, TVs
 | 
			
		||||
#notice we use "gib" instead of "GiB" so any WordDelimiterFilter coming
 | 
			
		||||
#after us won't split it into two words.
 | 
			
		||||
 | 
			
		||||
# Synonym mappings can be used for spelling correction too
 | 
			
		||||
pixima => pixma
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -5,6 +5,9 @@ class Bulletin
 | 
			
		|||
  include Mongoid::Timestamps
 | 
			
		||||
  include Mongoid::MultiParameterAttributes
 | 
			
		||||
  include Impressionist::Impressionable
 | 
			
		||||
  include NccuSearch
 | 
			
		||||
 | 
			
		||||
  scope :searchable,where(:is_checked=>true,:is_hidden=>false,:is_pending=>false)
 | 
			
		||||
 | 
			
		||||
  is_impressionable :counter_cache => { :column_name => :view_count }
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -56,6 +59,10 @@ class Bulletin
 | 
			
		|||
  after_save :save_bulletin_files
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
def publish_month
 | 
			
		||||
  published_at.strftime("%B %Y")
 | 
			
		||||
end
 | 
			
		||||
 | 
			
		||||
  def self.search( search = nil, category_id = nil )
 | 
			
		||||
    if category_id.to_s.size > 0 and search.to_s.size > 0
 | 
			
		||||
      key = /#{search}/
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -9,20 +9,29 @@ class Panel::News::FrontEnd::NewsBulletinsController < OrbitWidgetController
 | 
			
		|||
  # GET /news_bulletins.xml
 | 
			
		||||
  
 | 
			
		||||
  def index
 | 
			
		||||
    date_now = Time.now
 | 
			
		||||
    if !params[:category_id].blank?
 | 
			
		||||
      @news_bulletins = NewsBulletin.can_display.where(:news_bulletin_category_id => params[:category_id]).any_of( {deadline: nil,:postdate.lte => date_now} , {:deadline.gte => date_now,:postdate.lte => date_now} ).desc( :is_top, :postdate).page( params[:page_main]).per(10)
 | 
			
		||||
    elsif !params[:tag_id].blank?
 | 
			
		||||
      tmp = NewsTag.find(params[:tag_id]) rescue nil
 | 
			
		||||
      tmp = NewsTag.where(key: params[:tag_id])[0] unless tmp
 | 
			
		||||
      @news_bulletins = tmp.news_bulletins.can_display.any_of( {deadline: nil,:postdate.lte => date_now} , {:deadline.gte => date_now,:postdate.lte => date_now} ).desc( :is_top, :postdate).page( params[:page_main]).per(10) rescue nil
 | 
			
		||||
    else
 | 
			
		||||
      @news_bulletins = NewsBulletin.can_display.any_of( {deadline: nil,:postdate.lte => date_now} , {:deadline.gte => date_now,:postdate.lte => date_now} ).desc( :is_top, :postdate).page( params[:page_main]).per(10)
 | 
			
		||||
    end
 | 
			
		||||
    if !params[:search_query].blank?
 | 
			
		||||
      @news_bulletins = NewsBulletin.solr_search do
 | 
			
		||||
        fulltext params[:search_query] do
 | 
			
		||||
            fields(:text,:title=>2.0)
 | 
			
		||||
        end
 | 
			
		||||
      end.each_hit_with_result
 | 
			
		||||
 | 
			
		||||
    else
 | 
			
		||||
        date_now = Time.now
 | 
			
		||||
      if !params[:category_id].blank?
 | 
			
		||||
       @news_bulletins = NewsBulletin.can_display.where(:news_bulletin_category_id => params[:category_id]).any_of( {deadline: nil,:postdate.lte => date_now} , {:deadline.gte => date_now,:postdate.lte => date_now} ).desc( :is_top, :postdate).page( params[:page_main]).per(10)
 | 
			
		||||
      elsif !params[:tag_id].blank?
 | 
			
		||||
        tmp = NewsTag.find(params[:tag_id]) rescue nil
 | 
			
		||||
        tmp = NewsTag.where(key: params[:tag_id])[0] unless tmp
 | 
			
		||||
       @news_bulletins = tmp.news_bulletins.can_display.any_of( {deadline: nil,:postdate.lte => date_now} , {:deadline.gte => date_now,:postdate.lte => date_now} ).desc( :is_top, :postdate).page( params[:page_main]).per(10) rescue nil
 | 
			
		||||
      else
 | 
			
		||||
        @news_bulletins = NewsBulletin.can_display.any_of( {deadline: nil,:postdate.lte => date_now} , {:deadline.gte => date_now,:postdate.lte => date_now} ).desc( :is_top, :postdate).page( params[:page_main]).per(10)
 | 
			
		||||
      end
 | 
			
		||||
    end
 | 
			
		||||
	  get_categorys
 | 
			
		||||
	  
 | 
			
		||||
	  @current_category = NewsBulletinCategory.from_id(params[:category_id]) rescue nil
 | 
			
		||||
 | 
			
		||||
  end
 | 
			
		||||
  
 | 
			
		||||
  def show
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -46,6 +46,9 @@ class Panel::News::Widget::NewsBulletinsController < OrbitWidgetController
 | 
			
		|||
    get_categorys
 | 
			
		||||
  end
 | 
			
		||||
 | 
			
		||||
  # def news_bulletins_search_block
 | 
			
		||||
  # end
 | 
			
		||||
 | 
			
		||||
  def home_banner
 | 
			
		||||
    if !params[:category_id].blank?
 | 
			
		||||
      @news_bulletins = NewsBulletin.can_display.where(:news_bulletin_category_id => params[:category_id]).widget_datas.limit(9)
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -5,6 +5,16 @@ class NewsBulletin
 | 
			
		|||
  include Mongoid::Timestamps
 | 
			
		||||
  include Mongoid::MultiParameterAttributes  
 | 
			
		||||
  include Impressionist::Impressionable
 | 
			
		||||
  # include OrbitBasis::BaseModel
 | 
			
		||||
  # include OrbitSearchLib::ObjectSearchable
 | 
			
		||||
  # include NccuSearch
 | 
			
		||||
  # include Redis::Objects
 | 
			
		||||
 include Mongoid::BaseModel
 | 
			
		||||
 | 
			
		||||
  include Sunspot::Mongoid
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
  # scope :searchable,where(:is_checked=>true,:is_hidden=>false,:is_pending=>false)
 | 
			
		||||
 | 
			
		||||
  is_impressionable :counter_cache => { :column_name => :view_count }
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -54,8 +64,62 @@ class NewsBulletin
 | 
			
		|||
  
 | 
			
		||||
  after_save :save_news_bulletin_links
 | 
			
		||||
  after_save :save_news_bulletin_files
 | 
			
		||||
# include OrbitBasis::ClassMethods
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
  searchable do
 | 
			
		||||
     text :title do
 | 
			
		||||
      titles = ""
 | 
			
		||||
      titles << (self.title.zh_tw.nil? ?  '':self.title.zh_tw)
 | 
			
		||||
      titles << (self.title.en.nil? ?  '':self.title.en)
 | 
			
		||||
      #(titles << self.title.en )unless  self.title.nil?
 | 
			
		||||
       doc = Nokogiri::HTML(titles)
 | 
			
		||||
       doc.text
 | 
			
		||||
       #VALID_LOCALES
 | 
			
		||||
     end
 | 
			
		||||
 | 
			
		||||
      text :text do
 | 
			
		||||
      texts = ""
 | 
			
		||||
      texts << (self.text.zh_tw.nil? ?  '':self.text.zh_tw)
 | 
			
		||||
      texts << (self.text.en.nil? ?  '':self.text.en)
 | 
			
		||||
      #texts << self.text.en  )unless  self.text.en.nil?
 | 
			
		||||
       doc = Nokogiri::HTML(texts)
 | 
			
		||||
       doc.text
 | 
			
		||||
       #VALID_LOCALES
 | 
			
		||||
     end
 | 
			
		||||
    # text :sub_titles do
 | 
			
		||||
    #   self.subtitle.zh_tw
 | 
			
		||||
    #   #VALID_LOCALES
 | 
			
		||||
    # end
 | 
			
		||||
    # text :text do
 | 
			
		||||
    #   self.text.zh_tw
 | 
			
		||||
    #   #VALID_LOCALES
 | 
			
		||||
    # end
 | 
			
		||||
    # text :content, :publish_month
 | 
			
		||||
    # text :comments do
 | 
			
		||||
    #   comments.map(&:content)
 | 
			
		||||
    # end
 | 
			
		||||
    # time :published_at
 | 
			
		||||
    # string :publish_month
 | 
			
		||||
  end
 | 
			
		||||
  # mapping do
 | 
			
		||||
  #   indexes :title,        :analyzer => 'cjk', :boost => 10
 | 
			
		||||
  #   indexes :sub_titles,        :analyzer => 'cjk', :boost => 5
 | 
			
		||||
  #   indexes :text,           :analyzer    => 'cjk'
 | 
			
		||||
  #  end
 | 
			
		||||
 | 
			
		||||
  # def to_indexed_json
 | 
			
		||||
  #     titles = title.zh_tw + title.en
 | 
			
		||||
  #     sub_titles = subtitle.zh_tw + subtitle.en
 | 
			
		||||
  #     texts = text.zh_tw + text.en
 | 
			
		||||
  #     {
 | 
			
		||||
  #       :id => id,
 | 
			
		||||
  #       :title => titles,
 | 
			
		||||
  #       :sub_titles => sub_titles,
 | 
			
		||||
  #       :text => texts
 | 
			
		||||
  #     }.to_json
 | 
			
		||||
  # end
 | 
			
		||||
 | 
			
		||||
  def self.search( search = nil, category_id = nil )
 | 
			
		||||
    if category_id.to_s.size > 0 and search.to_s.size > 0
 | 
			
		||||
      key = /#{search}/
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -0,0 +1,6 @@
 | 
			
		|||
<%= form_tag panel_news_front_end_news_bulletins_path, method: :get do %>
 | 
			
		||||
  <p>
 | 
			
		||||
    <%= text_field_tag :search_query, params[:search_query] %>
 | 
			
		||||
    <%= submit_tag "Search", name: nil %>
 | 
			
		||||
  </p>
 | 
			
		||||
<% end %>
 | 
			
		||||
| 
						 | 
				
			
			@ -45,6 +45,7 @@ Rails.application.routes.draw do
 | 
			
		|||
        match "reload_news_bulletins" => "news_bulletins#reload_news_bulletins"
 | 
			
		||||
        match "reload_web_links" => "news_bulletins#reload_web_links"
 | 
			
		||||
        match "news_bulletins_side_bar" => "news_bulletins#news_bulletins_side_bar"
 | 
			
		||||
        match "news_bulletins_search_block" => "news_bulletins#news_bulletins_search_block"
 | 
			
		||||
      end
 | 
			
		||||
    end
 | 
			
		||||
  end
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -5,8 +5,7 @@ class Panel::PageContent::BackEnd::PageContextsController < OrbitBackendControll
 | 
			
		|||
  #before_filter :is_admin?
 | 
			
		||||
 | 
			
		||||
  def index
 | 
			
		||||
	
 | 
			
		||||
	@page_contexts = params[:sort] ? get_sorted_and_filtered("page_contexts", {:archived => false}) : PageContext.where(:archived => false).page(params[:page]).per(10)
 | 
			
		||||
	@page_contexts =  (params.has_key?:sort)?  get_sorted_and_filtered("page_contexts", {:archived => false}) : PageContext.where(:archived => false).page(params[:page]).per(10)
 | 
			
		||||
 | 
			
		||||
    respond_to do |format|
 | 
			
		||||
      format.html # index.html.erb
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -19,5 +19,5 @@
 | 
			
		|||
		<%end -%>
 | 
			
		||||
	</td>
 | 
			
		||||
	<td><%= display_date_time(page_context.updated_at) %></td>
 | 
			
		||||
	<td><%= User.find(page_context.create_user_id).name %></td>
 | 
			
		||||
	<td><%= User.find(page_context.create_user_id).name rescue ''%></td>
 | 
			
		||||
</tr>
 | 
			
		||||
| 
						 | 
				
			
			@ -0,0 +1,5 @@
 | 
			
		|||
README.rdoc
 | 
			
		||||
lib/**/*.rb
 | 
			
		||||
bin/*
 | 
			
		||||
features/**/*.feature
 | 
			
		||||
LICENSE
 | 
			
		||||
| 
						 | 
				
			
			@ -0,0 +1,20 @@
 | 
			
		|||
Copyright (c) 2009 jugyo
 | 
			
		||||
 | 
			
		||||
Permission is hereby granted, free of charge, to any person obtaining
 | 
			
		||||
a copy of this software and associated documentation files (the
 | 
			
		||||
"Software"), to deal in the Software without restriction, including
 | 
			
		||||
without limitation the rights to use, copy, modify, merge, publish,
 | 
			
		||||
distribute, sublicense, and/or sell copies of the Software, and to
 | 
			
		||||
permit persons to whom the Software is furnished to do so, subject to
 | 
			
		||||
the following conditions:
 | 
			
		||||
 | 
			
		||||
The above copyright notice and this permission notice shall be
 | 
			
		||||
included in all copies or substantial portions of the Software.
 | 
			
		||||
 | 
			
		||||
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
 | 
			
		||||
EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
 | 
			
		||||
MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
 | 
			
		||||
NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
 | 
			
		||||
LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
 | 
			
		||||
OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
 | 
			
		||||
WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
 | 
			
		||||
| 
						 | 
				
			
			@ -0,0 +1,53 @@
 | 
			
		|||
sunspot_mongoid
 | 
			
		||||
====
 | 
			
		||||
 | 
			
		||||
A Sunspot wrapper for Mongoid.
 | 
			
		||||
 | 
			
		||||
Install
 | 
			
		||||
----
 | 
			
		||||
 | 
			
		||||
    gem install sunspot_mongoid
 | 
			
		||||
 | 
			
		||||
Examples
 | 
			
		||||
----
 | 
			
		||||
 | 
			
		||||
    class Post
 | 
			
		||||
      include Mongoid::Document
 | 
			
		||||
      field :title
 | 
			
		||||
 | 
			
		||||
      include Sunspot::Mongoid
 | 
			
		||||
      searchable do
 | 
			
		||||
        text :title
 | 
			
		||||
      end
 | 
			
		||||
    end
 | 
			
		||||
 | 
			
		||||
For Rails3
 | 
			
		||||
----
 | 
			
		||||
 | 
			
		||||
### as gem:
 | 
			
		||||
 | 
			
		||||
add a gem to Gemfile as following,
 | 
			
		||||
 | 
			
		||||
    gem 'sunspot_mongoid'
 | 
			
		||||
 | 
			
		||||
### as plugin:
 | 
			
		||||
 | 
			
		||||
add gems to Gemfile as following,
 | 
			
		||||
 | 
			
		||||
    gem 'sunspot'
 | 
			
		||||
    gem 'sunspot_rails'
 | 
			
		||||
 | 
			
		||||
and install sunspot_mongoid as rails plugin,
 | 
			
		||||
 | 
			
		||||
    rails plugin install git://github.com/jugyo/sunspot_mongoid.git
 | 
			
		||||
 | 
			
		||||
Links
 | 
			
		||||
----
 | 
			
		||||
 | 
			
		||||
* [sunspot](http://github.com/outoftime/sunspot)
 | 
			
		||||
* [sunspot_rails](http://github.com/outoftime/sunspot/tree/master/sunspot_rails/)
 | 
			
		||||
 | 
			
		||||
Copyright
 | 
			
		||||
----
 | 
			
		||||
 | 
			
		||||
Copyright (c) 2010 jugyo. See LICENSE for details.
 | 
			
		||||
| 
						 | 
				
			
			@ -0,0 +1,57 @@
 | 
			
		|||
require 'rubygems'
 | 
			
		||||
require 'rake'
 | 
			
		||||
 | 
			
		||||
begin
 | 
			
		||||
  require 'jeweler'
 | 
			
		||||
  Jeweler::Tasks.new do |gem|
 | 
			
		||||
    gem.name = "sunspot_mongoid"
 | 
			
		||||
    gem.summary = %Q{A Sunspot wrapper for Mongoid.}
 | 
			
		||||
    gem.description = %Q{A Sunspot wrapper for Mongoid that is like sunspot_rails.}
 | 
			
		||||
    gem.email = "jugyo.org@gmail.com"
 | 
			
		||||
    gem.homepage = "http://github.com/jugyo/sunspot_mongoid"
 | 
			
		||||
    gem.authors = ["jugyo"]
 | 
			
		||||
    gem.add_runtime_dependency "mongoid", ">= 0"
 | 
			
		||||
    gem.add_runtime_dependency "sunspot", ">= 1.1.0"
 | 
			
		||||
    gem.add_runtime_dependency "sunspot_rails", ">= 1.1.0"
 | 
			
		||||
    gem.add_development_dependency "shoulda", ">= 0"
 | 
			
		||||
    gem.add_development_dependency "rr", ">= 0"
 | 
			
		||||
    # gem is a Gem::Specification... see http://www.rubygems.org/read/chapter/20 for additional settings
 | 
			
		||||
  end
 | 
			
		||||
  Jeweler::GemcutterTasks.new
 | 
			
		||||
rescue LoadError
 | 
			
		||||
  puts "Jeweler (or a dependency) not available. Install it with: gem install jeweler"
 | 
			
		||||
end
 | 
			
		||||
 | 
			
		||||
require 'rake/testtask'
 | 
			
		||||
Rake::TestTask.new(:test) do |test|
 | 
			
		||||
  test.libs << 'lib' << 'test'
 | 
			
		||||
  test.pattern = 'test/**/test_*.rb'
 | 
			
		||||
  test.verbose = true
 | 
			
		||||
end
 | 
			
		||||
 | 
			
		||||
begin
 | 
			
		||||
  require 'rcov/rcovtask'
 | 
			
		||||
  Rcov::RcovTask.new do |test|
 | 
			
		||||
    test.libs << 'test'
 | 
			
		||||
    test.pattern = 'test/**/test_*.rb'
 | 
			
		||||
    test.verbose = true
 | 
			
		||||
  end
 | 
			
		||||
rescue LoadError
 | 
			
		||||
  task :rcov do
 | 
			
		||||
    abort "RCov is not available. In order to run rcov, you must: sudo gem install spicycode-rcov"
 | 
			
		||||
  end
 | 
			
		||||
end
 | 
			
		||||
 | 
			
		||||
task :test => :check_dependencies
 | 
			
		||||
 | 
			
		||||
task :default => :test
 | 
			
		||||
 | 
			
		||||
require 'rake/rdoctask'
 | 
			
		||||
Rake::RDocTask.new do |rdoc|
 | 
			
		||||
  version = File.exist?('VERSION') ? File.read('VERSION') : ""
 | 
			
		||||
 | 
			
		||||
  rdoc.rdoc_dir = 'rdoc'
 | 
			
		||||
  rdoc.title = "sunspot_mongoid #{version}"
 | 
			
		||||
  rdoc.rdoc_files.include('README*')
 | 
			
		||||
  rdoc.rdoc_files.include('lib/**/*.rb')
 | 
			
		||||
end
 | 
			
		||||
| 
						 | 
				
			
			@ -0,0 +1 @@
 | 
			
		|||
0.4.1
 | 
			
		||||
| 
						 | 
				
			
			@ -0,0 +1,36 @@
 | 
			
		|||
$:.unshift(File.join(File.dirname(__FILE__), '..', 'lib'))
 | 
			
		||||
require 'sunspot_mongoid'
 | 
			
		||||
 | 
			
		||||
Mongoid.configure do |config|
 | 
			
		||||
  config.master = Mongo::Connection.new.db('sunspot-mongoid-test')
 | 
			
		||||
end
 | 
			
		||||
 | 
			
		||||
# model
 | 
			
		||||
class Post
 | 
			
		||||
  include Mongoid::Document
 | 
			
		||||
  field :title
 | 
			
		||||
 | 
			
		||||
  include Sunspot::Mongoid
 | 
			
		||||
  searchable do
 | 
			
		||||
    text :title
 | 
			
		||||
  end
 | 
			
		||||
end
 | 
			
		||||
 | 
			
		||||
# remove old indexes
 | 
			
		||||
Post.destroy_all
 | 
			
		||||
 | 
			
		||||
# indexing
 | 
			
		||||
Post.create(:title => 'foo')
 | 
			
		||||
Post.create(:title => 'foo bar')
 | 
			
		||||
Post.create(:title => 'bar baz')
 | 
			
		||||
 | 
			
		||||
# commit
 | 
			
		||||
Sunspot.commit
 | 
			
		||||
 | 
			
		||||
# search
 | 
			
		||||
search = Post.search do
 | 
			
		||||
  keywords 'foo'
 | 
			
		||||
end
 | 
			
		||||
search.each_hit_with_result do |hit, post|
 | 
			
		||||
  p post
 | 
			
		||||
end
 | 
			
		||||
| 
						 | 
				
			
			@ -0,0 +1 @@
 | 
			
		|||
require 'sunspot_mongoid'
 | 
			
		||||
| 
						 | 
				
			
			@ -0,0 +1,49 @@
 | 
			
		|||
require 'sunspot'
 | 
			
		||||
require 'mongoid'
 | 
			
		||||
require 'sunspot/rails'
 | 
			
		||||
 | 
			
		||||
# == Examples:
 | 
			
		||||
#
 | 
			
		||||
# class Post
 | 
			
		||||
#   include Mongoid::Document
 | 
			
		||||
#   field :title
 | 
			
		||||
# 
 | 
			
		||||
#   include Sunspot::Mongoid
 | 
			
		||||
#   searchable do
 | 
			
		||||
#     text :title
 | 
			
		||||
#   end
 | 
			
		||||
# end
 | 
			
		||||
#
 | 
			
		||||
module Sunspot
 | 
			
		||||
  module Mongoid
 | 
			
		||||
    def self.included(base)
 | 
			
		||||
      base.class_eval do
 | 
			
		||||
        extend Sunspot::Rails::Searchable::ActsAsMethods
 | 
			
		||||
        Sunspot::Adapters::DataAccessor.register(DataAccessor, base)
 | 
			
		||||
        Sunspot::Adapters::InstanceAdapter.register(InstanceAdapter, base)
 | 
			
		||||
      end
 | 
			
		||||
    end
 | 
			
		||||
 | 
			
		||||
    class InstanceAdapter < Sunspot::Adapters::InstanceAdapter
 | 
			
		||||
      def id
 | 
			
		||||
        @instance.id
 | 
			
		||||
      end
 | 
			
		||||
    end
 | 
			
		||||
 | 
			
		||||
    class DataAccessor < Sunspot::Adapters::DataAccessor
 | 
			
		||||
      def load(id)
 | 
			
		||||
        criteria(id).first
 | 
			
		||||
      end
 | 
			
		||||
 | 
			
		||||
      def load_all(ids)
 | 
			
		||||
        criteria(ids)
 | 
			
		||||
      end
 | 
			
		||||
 | 
			
		||||
      private
 | 
			
		||||
 | 
			
		||||
      def criteria(id)
 | 
			
		||||
        @clazz.criteria.id(id)
 | 
			
		||||
      end
 | 
			
		||||
    end
 | 
			
		||||
  end
 | 
			
		||||
end
 | 
			
		||||
| 
						 | 
				
			
			@ -0,0 +1 @@
 | 
			
		|||
require 'sunspot/mongoid'
 | 
			
		||||
| 
						 | 
				
			
			@ -0,0 +1,67 @@
 | 
			
		|||
# Generated by jeweler
 | 
			
		||||
# DO NOT EDIT THIS FILE DIRECTLY
 | 
			
		||||
# Instead, edit Jeweler::Tasks in Rakefile, and run 'rake gemspec'
 | 
			
		||||
# -*- encoding: utf-8 -*-
 | 
			
		||||
 | 
			
		||||
Gem::Specification.new do |s|
 | 
			
		||||
  s.name = %q{sunspot_mongoid}
 | 
			
		||||
  s.version = "0.4.1"
 | 
			
		||||
 | 
			
		||||
  s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
 | 
			
		||||
  s.authors = ["jugyo"]
 | 
			
		||||
  s.date = %q{2011-03-04}
 | 
			
		||||
  s.description = %q{A Sunspot wrapper for Mongoid that is like sunspot_rails.}
 | 
			
		||||
  s.email = %q{jugyo.org@gmail.com}
 | 
			
		||||
  s.extra_rdoc_files = [
 | 
			
		||||
    "LICENSE",
 | 
			
		||||
    "README.md"
 | 
			
		||||
  ]
 | 
			
		||||
  s.files = [
 | 
			
		||||
    ".document",
 | 
			
		||||
    "LICENSE",
 | 
			
		||||
    "README.md",
 | 
			
		||||
    "Rakefile",
 | 
			
		||||
    "VERSION",
 | 
			
		||||
    "examples/example.rb",
 | 
			
		||||
    "init.rb",
 | 
			
		||||
    "lib/sunspot/mongoid.rb",
 | 
			
		||||
    "lib/sunspot_mongoid.rb",
 | 
			
		||||
    "sunspot_mongoid.gemspec",
 | 
			
		||||
    "test/helper.rb",
 | 
			
		||||
    "test/test_sunspot_mongoid.rb"
 | 
			
		||||
  ]
 | 
			
		||||
  s.homepage = %q{http://github.com/jugyo/sunspot_mongoid}
 | 
			
		||||
  s.require_paths = ["lib"]
 | 
			
		||||
  s.rubygems_version = %q{1.6.0}
 | 
			
		||||
  s.summary = %q{A Sunspot wrapper for Mongoid.}
 | 
			
		||||
  s.test_files = [
 | 
			
		||||
    "examples/example.rb",
 | 
			
		||||
    "test/helper.rb",
 | 
			
		||||
    "test/test_sunspot_mongoid.rb"
 | 
			
		||||
  ]
 | 
			
		||||
 | 
			
		||||
  if s.respond_to? :specification_version then
 | 
			
		||||
    s.specification_version = 3
 | 
			
		||||
 | 
			
		||||
    if Gem::Version.new(Gem::VERSION) >= Gem::Version.new('1.2.0') then
 | 
			
		||||
      s.add_runtime_dependency(%q<mongoid>, [">= 0"])
 | 
			
		||||
      s.add_runtime_dependency(%q<sunspot>, [">= 1.1.0"])
 | 
			
		||||
      s.add_runtime_dependency(%q<sunspot_rails>, [">= 1.1.0"])
 | 
			
		||||
      s.add_development_dependency(%q<shoulda>, [">= 0"])
 | 
			
		||||
      s.add_development_dependency(%q<rr>, [">= 0"])
 | 
			
		||||
    else
 | 
			
		||||
      s.add_dependency(%q<mongoid>, [">= 0"])
 | 
			
		||||
      s.add_dependency(%q<sunspot>, [">= 1.1.0"])
 | 
			
		||||
      s.add_dependency(%q<sunspot_rails>, [">= 1.1.0"])
 | 
			
		||||
      s.add_dependency(%q<shoulda>, [">= 0"])
 | 
			
		||||
      s.add_dependency(%q<rr>, [">= 0"])
 | 
			
		||||
    end
 | 
			
		||||
  else
 | 
			
		||||
    s.add_dependency(%q<mongoid>, [">= 0"])
 | 
			
		||||
    s.add_dependency(%q<sunspot>, [">= 1.1.0"])
 | 
			
		||||
    s.add_dependency(%q<sunspot_rails>, [">= 1.1.0"])
 | 
			
		||||
    s.add_dependency(%q<shoulda>, [">= 0"])
 | 
			
		||||
    s.add_dependency(%q<rr>, [">= 0"])
 | 
			
		||||
  end
 | 
			
		||||
end
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -0,0 +1,12 @@
 | 
			
		|||
require 'rubygems'
 | 
			
		||||
require 'test/unit'
 | 
			
		||||
require 'shoulda'
 | 
			
		||||
require 'rr'
 | 
			
		||||
 | 
			
		||||
$LOAD_PATH.unshift(File.join(File.dirname(__FILE__), '..', 'lib'))
 | 
			
		||||
$LOAD_PATH.unshift(File.dirname(__FILE__))
 | 
			
		||||
require 'sunspot_mongoid'
 | 
			
		||||
 | 
			
		||||
class Test::Unit::TestCase
 | 
			
		||||
  include RR::Adapters::TestUnit
 | 
			
		||||
end
 | 
			
		||||
| 
						 | 
				
			
			@ -0,0 +1,51 @@
 | 
			
		|||
require 'helper'
 | 
			
		||||
 | 
			
		||||
#
 | 
			
		||||
# NOTE: I think tests are too few...
 | 
			
		||||
#
 | 
			
		||||
class TestSunspotMongoid < Test::Unit::TestCase
 | 
			
		||||
  class Foo
 | 
			
		||||
    include Mongoid::Document
 | 
			
		||||
    field :title
 | 
			
		||||
 | 
			
		||||
    include Sunspot::Mongoid
 | 
			
		||||
    searchable do
 | 
			
		||||
      text :title
 | 
			
		||||
    end
 | 
			
		||||
  end
 | 
			
		||||
 | 
			
		||||
  class Bar
 | 
			
		||||
    include Mongoid::Document
 | 
			
		||||
    field :title
 | 
			
		||||
 | 
			
		||||
    include Sunspot::Mongoid
 | 
			
		||||
    searchable(:auto_index => false, :auto_remove => false) do
 | 
			
		||||
      text :title
 | 
			
		||||
    end
 | 
			
		||||
  end
 | 
			
		||||
 | 
			
		||||
  context 'default' do
 | 
			
		||||
    should 'sunspot_options is specified' do
 | 
			
		||||
      assert Foo.sunspot_options == {:include => []}
 | 
			
		||||
      assert Bar.sunspot_options == {:auto_index=>false, :auto_remove=>false, :include=>[]}
 | 
			
		||||
    end
 | 
			
		||||
 | 
			
		||||
    should 'be called Sunspot.setup when call Foo.searchable' do
 | 
			
		||||
      mock(Sunspot).setup(Foo)
 | 
			
		||||
      Foo.searchable
 | 
			
		||||
    end
 | 
			
		||||
 | 
			
		||||
    should 'get as text_fields from Sunspot::Setup' do
 | 
			
		||||
      text_field = Sunspot::Setup.for(Foo).all_text_fields.first
 | 
			
		||||
      assert text_field.type == Sunspot::Type::TextType.instance
 | 
			
		||||
      assert text_field.name == :title
 | 
			
		||||
    end
 | 
			
		||||
 | 
			
		||||
    should 'search' do
 | 
			
		||||
      options = {}
 | 
			
		||||
      mock.proxy(Foo).solr_execute_search(options)
 | 
			
		||||
      mock(Sunspot).new_search(Foo) { mock(Object.new).execute }
 | 
			
		||||
      Foo.search(options)
 | 
			
		||||
    end
 | 
			
		||||
  end
 | 
			
		||||
end
 | 
			
		||||
		Reference in New Issue