跟益达学Solr5之solrconfig.xml配置详解

  solrconfig.xml配置文件中包含了很多solr自身配置相关的参数,solrconfig.xml配置文件示例可以从solr的解压目录下找到,如图:

 用文本编辑软件打开solrconfig.xml配置,你将会看到以下配置内容:

Xml代码  收藏代码
  1. <?xml version="1.0" encoding="UTF-8" ?>  
  2. <!--  
  3.  Licensed to the Apache Software Foundation (ASF) under one or more  
  4.  contributor license agreements.  See the NOTICE file distributed with  
  5.  this work for additional information regarding copyright ownership.  
  6.  The ASF licenses this file to You under the Apache License, Version 2.0  
  7.  (the "License"); you may not use this file except in compliance with  
  8.  the License.  You may obtain a copy of the License at  
  9.   
  10.      http://www.apache.org/licenses/LICENSE-2.0  
  11.   
  12.  Unless required by applicable law or agreed to in writing, software  
  13.  distributed under the License is distributed on an "AS IS" BASIS,  
  14.  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.  
  15.  See the License for the specific language governing permissions and  
  16.  limitations under the License.  
  17. -->  
  18.   
  19. <!--   
  20.      For more details about configurations options that may appear in  
  21.      this file, see http://wiki.apache.org/solr/SolrConfigXml.   
  22. -->  
  23. <config>  
  24.   <!-- In all configuration below, a prefix of "solr." for class names  
  25.        is an alias that causes solr to search appropriate packages,  
  26.        including org.apache.solr.(search|update|request|core|analysis)  
  27.   
  28.        You may also specify a fully qualified Java classname if you  
  29.        have your own custom plugins.  
  30.     -->  
  31.   
  32.   <!-- Controls what version of Lucene various components of Solr  
  33.        adhere to.  Generally, you want to use the latest version to  
  34.        get all bug fixes and improvements. It is highly recommended  
  35.        that you fully re-index after changing this setting as it can  
  36.        affect both how text is indexed and queried.  
  37.   -->  
  38.   <luceneMatchVersion>5.1.0</luceneMatchVersion>  
  39.   
  40.   <!-- Data Directory  
  41.   
  42.        Used to specify an alternate directory to hold all index data  
  43.        other than the default ./data under the Solr home.  If  
  44.        replication is in use, this should match the replication  
  45.        configuration.  
  46.     -->  
  47.   <!-- 
  48.   <dataDir>${solr.data.dir:}</dataDir> 
  49.   -->  
  50.   <dataDir>C:\solr_home\core1\data</dataDir>  
  51.   
  52.   <!-- The DirectoryFactory to use for indexes.  
  53.          
  54.        solr.StandardDirectoryFactory is filesystem  
  55.        based and tries to pick the best implementation for the current  
  56.        JVM and platform.  solr.NRTCachingDirectoryFactory, the default,  
  57.        wraps solr.StandardDirectoryFactory and caches small files in memory  
  58.        for better NRT performance.  
  59.   
  60.        One can force a particular implementation via solr.MMapDirectoryFactory,  
  61.        solr.NIOFSDirectoryFactory, or solr.SimpleFSDirectoryFactory.  
  62.   
  63.        solr.RAMDirectoryFactory is memory based, not  
  64.        persistent, and doesn't work with replication.  
  65.     -->  
  66.   <directoryFactory name="DirectoryFactory"   
  67.                     class="${solr.directoryFactory:solr.NRTCachingDirectoryFactory}">  
  68.   </directoryFactory>   
  69.   
  70.   <!-- The CodecFactory for defining the format of the inverted index.  
  71.        The default implementation is SchemaCodecFactory, which is the official Lucene  
  72.        index format, but hooks into the schema to provide per-field customization of  
  73.        the postings lists and per-document values in the fieldType element  
  74.        (postingsFormat/docValuesFormat). Note that most of the alternative implementations  
  75.        are experimental, so if you choose to customize the index format, it's a good  
  76.        idea to convert back to the official format e.g. via IndexWriter.addIndexes(IndexReader)  
  77.        before upgrading to a newer version to avoid unnecessary reindexing.  
  78.   -->  
  79.   <codecFactory class="solr.SchemaCodecFactory"/>  
  80.   
  81.   <schemaFactory class="ClassicIndexSchemaFactory"/>  
  82.   
  83.   <!-- ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~  
  84.        Index Config - These settings control low-level behavior of indexing  
  85.        Most example settings here show the default value, but are commented  
  86.        out, to more easily see where customizations have been made.  
  87.          
  88.        Note: This replaces <indexDefaults> and <mainIndex> from older versions  
  89.        ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -->  
  90.   <indexConfig>  
  91.   
  92.     <!-- LockFactory   
  93.   
  94.          This option specifies which Lucene LockFactory implementation  
  95.          to use.  
  96.         
  97.          single = SingleInstanceLockFactory - suggested for a  
  98.                   read-only index or when there is no possibility of  
  99.                   another process trying to modify the index.  
  100.          native = NativeFSLockFactory - uses OS native file locking.  
  101.                   Do not use when multiple solr webapps in the same  
  102.                   JVM are attempting to share a single index.  
  103.          simple = SimpleFSLockFactory  - uses a plain file for locking  
  104.   
  105.          Defaults: 'native' is default for Solr3.6 and later, otherwise  
  106.                    'simple' is the default  
  107.   
  108.          More details on the nuances of each LockFactory...  
  109.          http://wiki.apache.org/lucene-java/AvailableLockFactories  
  110.     -->  
  111.     <lockType>${solr.lock.type:native}</lockType>  
  112.   
  113.     <!-- Lucene Infostream  
  114.          
  115.          To aid in advanced debugging, Lucene provides an "InfoStream"  
  116.          of detailed information when indexing.  
  117.   
  118.          Setting the value to true will instruct the underlying Lucene  
  119.          IndexWriter to write its info stream to solr's log. By default,  
  120.          this is enabled here, and controlled through log4j.properties.  
  121.       -->  
  122.      <infoStream>true</infoStream>  
  123.   </indexConfig>  
  124.   
  125.   
  126.   <!-- JMX  
  127.          
  128.        This example enables JMX if and only if an existing MBeanServer  
  129.        is found, use this if you want to configure JMX through JVM  
  130.        parameters. Remove this to disable exposing Solr configuration  
  131.        and statistics to JMX.  
  132.   
  133.        For more details see http://wiki.apache.org/solr/SolrJmx  
  134.     -->  
  135.   <jmx />  
  136.   <!-- If you want to connect to a particular server, specify the  
  137.        agentId   
  138.     -->  
  139.   <!-- <jmx agentId="myAgent" /> -->  
  140.   <!-- If you want to start a new MBeanServer, specify the serviceUrl -->  
  141.   <!-- <jmx serviceUrl="service:jmx:rmi:///jndi/rmi://localhost:9999/solr"/> 
  142.     -->  
  143.   
  144.   <!-- The default high-performance update handler -->  
  145.   <updateHandler class="solr.DirectUpdateHandler2">  
  146.   
  147.     <!-- Enables a transaction log, used for real-time get, durability, and  
  148.          and solr cloud replica recovery.  The log can grow as big as  
  149.          uncommitted changes to the index, so use of a hard autoCommit  
  150.          is recommended (see below).  
  151.          "dir" - the target directory for transaction logs, defaults to the  
  152.                 solr data directory.  -->   
  153.     <updateLog>  
  154.       <str name="dir">${solr.ulog.dir:}</str>  
  155.     </updateLog>  
  156.    
  157.     <!-- AutoCommit  
  158.   
  159.          Perform a hard commit automatically under certain conditions.  
  160.          Instead of enabling autoCommit, consider using "commitWithin"  
  161.          when adding documents.   
  162.   
  163.          http://wiki.apache.org/solr/UpdateXmlMessages  
  164.   
  165.          maxDocs - Maximum number of documents to add since the last  
  166.                    commit before automatically triggering a new commit.  
  167.   
  168.          maxTime - Maximum amount of time in ms that is allowed to pass  
  169.                    since a document was added before automatically  
  170.                    triggering a new commit.   
  171.          openSearcher - if false, the commit causes recent index changes  
  172.            to be flushed to stable storage, but does not cause a new  
  173.            searcher to be opened to make those changes visible.  
  174.   
  175.          If the updateLog is enabled, then it's highly recommended to  
  176.          have some sort of hard autoCommit to limit the log size.  
  177.       -->  
  178.      <autoCommit>   
  179.        <maxTime>${solr.autoCommit.maxTime:15000}</maxTime>   
  180.        <openSearcher>false</openSearcher>   
  181.      </autoCommit>  
  182.   
  183.     <!-- softAutoCommit is like autoCommit except it causes a  
  184.          'soft' commit which only ensures that changes are visible  
  185.          but does not ensure that data is synced to disk.  This is  
  186.          faster and more near-realtime friendly than a hard commit.  
  187.       -->  
  188.      <autoSoftCommit>   
  189.        <maxTime>${solr.autoSoftCommit.maxTime:-1}</maxTime>   
  190.      </autoSoftCommit>  
  191.   
  192.   </updateHandler>  
  193.     
  194.   <!-- ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~  
  195.        Query section - these settings control query time things like caches  
  196.        ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -->  
  197.   <query>  
  198.     <!-- Max Boolean Clauses  
  199.   
  200.          Maximum number of clauses in each BooleanQuery,  an exception  
  201.          is thrown if exceeded.  
  202.   
  203.          ** WARNING **  
  204.            
  205.          This option actually modifies a global Lucene property that  
  206.          will affect all SolrCores.  If multiple solrconfig.xml files  
  207.          disagree on this property, the value at any given moment will  
  208.          be based on the last SolrCore to be initialized.  
  209.            
  210.       -->  
  211.     <maxBooleanClauses>1024</maxBooleanClauses>  
  212.   
  213.   
  214.     <!-- Solr Internal Query Caches  
  215.   
  216.          There are two implementations of cache available for Solr,  
  217.          LRUCache, based on a synchronized LinkedHashMap, and  
  218.          FastLRUCache, based on a ConcurrentHashMap.    
  219.   
  220.          FastLRUCache has faster gets and slower puts in single  
  221.          threaded operation and thus is generally faster than LRUCache  
  222.          when the hit ratio of the cache is high (> 75%), and may be  
  223.          faster under other scenarios on multi-cpu systems.  
  224.     -->  
  225.   
  226.     <!-- Filter Cache  
  227.   
  228.          Cache used by SolrIndexSearcher for filters (DocSets),  
  229.          unordered sets of *all* documents that match a query.  When a  
  230.          new searcher is opened, its caches may be prepopulated or  
  231.          "autowarmed" using data from caches in the old searcher.  
  232.          autowarmCount is the number of items to prepopulate.  For  
  233.          LRUCache, the autowarmed items will be the most recently  
  234.          accessed items.  
  235.   
  236.          Parameters:  
  237.            class - the SolrCache implementation LRUCache or  
  238.                (LRUCache or FastLRUCache)  
  239.            size - the maximum number of entries in the cache  
  240.            initialSize - the initial capacity (number of entries) of  
  241.                the cache.  (see java.util.HashMap)  
  242.            autowarmCount - the number of entries to prepopulate from  
  243.                and old cache.    
  244.       -->  
  245.     <filterCache class="solr.FastLRUCache"  
  246.                  size="512"  
  247.                  initialSize="512"  
  248.                  autowarmCount="0"/>  
  249.   
  250.     <!-- Query Result Cache  
  251.            
  252.          Caches results of searches - ordered lists of document ids  
  253.          (DocList) based on a query, a sort, and the range of documents requested.    
  254.       -->  
  255.     <queryResultCache class="solr.LRUCache"  
  256.                      size="512"  
  257.                      initialSize="512"  
  258.                      autowarmCount="0"/>  
  259.      
  260.     <!-- Document Cache  
  261.   
  262.          Caches Lucene Document objects (the stored fields for each  
  263.          document).  Since Lucene internal document ids are transient,  
  264.          this cache will not be autowarmed.    
  265.       -->  
  266.     <documentCache class="solr.LRUCache"  
  267.                    size="512"  
  268.                    initialSize="512"  
  269.                    autowarmCount="0"/>  
  270.       
  271.     <!-- custom cache currently used by block join -->   
  272.     <cache name="perSegFilter"  
  273.       class="solr.search.LRUCache"  
  274.       size="10"  
  275.       initialSize="0"  
  276.       autowarmCount="10"  
  277.       regenerator="solr.NoOpRegenerator" />  
  278.   
  279.     <!-- Lazy Field Loading  
  280.   
  281.          If true, stored fields that are not requested will be loaded  
  282.          lazily.  This can result in a significant speed improvement  
  283.          if the usual case is to not load all stored fields,  
  284.          especially if the skipped fields are large compressed text  
  285.          fields.  
  286.     -->  
  287.     <enableLazyFieldLoading>true</enableLazyFieldLoading>  
  288.   
  289.    <!-- Result Window Size  
  290.   
  291.         An optimization for use with the queryResultCache.  When a search  
  292.         is requested, a superset of the requested number of document ids  
  293.         are collected.  For example, if a search for a particular query  
  294.         requests matching documents 10 through 19, and queryWindowSize is 50,  
  295.         then documents 0 through 49 will be collected and cached.  Any further  
  296.         requests in that range can be satisfied via the cache.    
  297.      -->  
  298.    <queryResultWindowSize>20</queryResultWindowSize>  
  299.   
  300.    <!-- Maximum number of documents to cache for any entry in the  
  301.         queryResultCache.   
  302.      -->  
  303.    <queryResultMaxDocsCached>200</queryResultMaxDocsCached>  
  304.   
  305.     <!-- Use Cold Searcher  
  306.   
  307.          If a search request comes in and there is no current  
  308.          registered searcher, then immediately register the still  
  309.          warming searcher and use it.  If "false" then all requests  
  310.          will block until the first searcher is done warming.  
  311.       -->  
  312.     <useColdSearcher>false</useColdSearcher>  
  313.   
  314.     <!-- Max Warming Searchers  
  315.            
  316.          Maximum number of searchers that may be warming in the  
  317.          background concurrently.  An error is returned if this limit  
  318.          is exceeded.  
  319.   
  320.          Recommend values of 1-2 for read-only slaves, higher for  
  321.          masters w/o cache warming.  
  322.       -->  
  323.     <maxWarmingSearchers>2</maxWarmingSearchers>  
  324.   
  325.   </query>  
  326.   
  327.   
  328.   <!-- Request Dispatcher  
  329.   
  330.        This section contains instructions for how the SolrDispatchFilter  
  331.        should behave when processing requests for this SolrCore.  
  332.   
  333.        handleSelect is a legacy option that affects the behavior of requests  
  334.        such as /select?qt=XXX  
  335.   
  336.        handleSelect="true" will cause the SolrDispatchFilter to process  
  337.        the request and dispatch the query to a handler specified by the   
  338.        "qt" param, assuming "/select" isn't already registered.  
  339.   
  340.        handleSelect="false" will cause the SolrDispatchFilter to  
  341.        ignore "/select" requests, resulting in a 404 unless a handler  
  342.        is explicitly registered with the name "/select"  
  343.   
  344.        handleSelect="true" is not recommended for new users, but is the default  
  345.        for backwards compatibility  
  346.     -->  
  347.   <requestDispatcher handleSelect="false" >  
  348.     <!-- Request Parsing  
  349.   
  350.          These settings indicate how Solr Requests may be parsed, and  
  351.          what restrictions may be placed on the ContentStreams from  
  352.          those requests  
  353.   
  354.          enableRemoteStreaming - enables use of the stream.file  
  355.          and stream.url parameters for specifying remote streams.  
  356.   
  357.          multipartUploadLimitInKB - specifies the max size (in KiB) of  
  358.          Multipart File Uploads that Solr will allow in a Request.  
  359.            
  360.          formdataUploadLimitInKB - specifies the max size (in KiB) of  
  361.          form data (application/x-www-form-urlencoded) sent via  
  362.          POST. You can use POST to pass request parameters not  
  363.          fitting into the URL.  
  364.            
  365.          addHttpRequestToContext - if set to true, it will instruct  
  366.          the requestParsers to include the original HttpServletRequest  
  367.          object in the context map of the SolrQueryRequest under the   
  368.          key "httpRequest". It will not be used by any of the existing  
  369.          Solr components, but may be useful when developing custom   
  370.          plugins.  
  371.            
  372.          *** WARNING ***  
  373.          The settings below authorize Solr to fetch remote files, You  
  374.          should make sure your system has some authentication before  
  375.          using enableRemoteStreaming="true"  
  376.   
  377.       -->   
  378.     <requestParsers enableRemoteStreaming="true"   
  379.                     multipartUploadLimitInKB="2048000"  
  380.                     formdataUploadLimitInKB="2048"  
  381.                     addHttpRequestToContext="false"/>  
  382.   
  383.     <!-- HTTP Caching  
  384.   
  385.          Set HTTP caching related parameters (for proxy caches and clients).  
  386.   
  387.          The options below instruct Solr not to output any HTTP Caching  
  388.          related headers  
  389.       -->  
  390.     <httpCaching never304="true" />  
  391.   
  392.   </requestDispatcher>  
  393.   
  394.   <!-- Request Handlers   
  395.   
  396.        http://wiki.apache.org/solr/SolrRequestHandler  
  397.   
  398.        Incoming queries will be dispatched to a specific handler by name  
  399.        based on the path specified in the request.  
  400.   
  401.        Legacy behavior: If the request path uses "/select" but no Request  
  402.        Handler has that name, and if handleSelect="true" has been specified in  
  403.        the requestDispatcher, then the Request Handler is dispatched based on  
  404.        the qt parameter.  Handlers without a leading '/' are accessed this way  
  405.        like so: http://host/app/[core/]select?qt=name  If no qt is  
  406.        given, then the requestHandler that declares default="true" will be  
  407.        used or the one named "standard".  
  408.   
  409.        If a Request Handler is declared with startup="lazy", then it will  
  410.        not be initialized until the first request that uses it.  
  411.   
  412.     -->  
  413.   <!-- SearchHandler  
  414.   
  415.        http://wiki.apache.org/solr/SearchHandler  
  416.   
  417.        For processing Search Queries, the primary Request Handler  
  418.        provided with Solr is "SearchHandler" It delegates to a sequent  
  419.        of SearchComponents (see below) and supports distributed  
  420.        queries across multiple shards  
  421.     -->  
  422.   
  423.   <!--  
  424.   <requestHandler name="/dataimport" class="solr.DataImportHandler">  
  425.     <lst name="defaults">  
  426.       <str name="config">solr-data-config.xml</str>  
  427.     </lst>  
  428.   </requestHandler>  
  429.   -->  
  430.   <requestHandler name="/dataimport" class="solr.DataImportHandler">  
  431.     <lst name="defaults">  
  432.       <str name="config">data-config.xml</str>  
  433.     </lst>  
  434.   </requestHandler>  
  435.       
  436.   <requestHandler name="/select" class="solr.SearchHandler">  
  437.     <!-- default values for query parameters can be specified, these  
  438.          will be overridden by parameters in the request  
  439.       -->  
  440.      <lst name="defaults">  
  441.        <str name="echoParams">explicit</str>  
  442.        <int name="rows">10</int>  
  443.      </lst>  
  444.   
  445.     </requestHandler>  
  446.   
  447.   <!-- A request handler that returns indented JSON by default -->  
  448.   <requestHandler name="/query" class="solr.SearchHandler">  
  449.      <lst name="defaults">  
  450.        <str name="echoParams">explicit</str>  
  451.        <str name="wt">json</str>  
  452.        <str name="indent">true</str>  
  453.        <str name="df">text</str>  
  454.      </lst>  
  455.   </requestHandler>  
  456.   
  457.   <!--  
  458.     The export request handler is used to export full sorted result sets.  
  459.     Do not change these defaults.  
  460.   -->  
  461.   <requestHandler name="/export" class="solr.SearchHandler">  
  462.     <lst name="invariants">  
  463.       <str name="rq">{!xport}</str>  
  464.       <str name="wt">xsort</str>  
  465.       <str name="distrib">false</str>  
  466.     </lst>  
  467.   
  468.     <arr name="components">  
  469.       <str>query</str>  
  470.     </arr>  
  471.   </requestHandler>  
  472.   
  473.   
  474.   <initParams path="/update/**,/query,/select,/tvrh,/elevate,/spell">  
  475.     <lst name="defaults">  
  476.       <str name="df">text</str>  
  477.     </lst>  
  478.   </initParams>  
  479.   
  480.   <!-- Field Analysis Request Handler  
  481.   
  482.        RequestHandler that provides much the same functionality as  
  483.        analysis.jsp. Provides the ability to specify multiple field  
  484.        types and field names in the same request and outputs  
  485.        index-time and query-time analysis for each of them.  
  486.   
  487.        Request parameters are:  
  488.        analysis.fieldname - field name whose analyzers are to be used  
  489.   
  490.        analysis.fieldtype - field type whose analyzers are to be used  
  491.        analysis.fieldvalue - text for index-time analysis  
  492.        q (or analysis.q) - text for query time analysis  
  493.        analysis.showmatch (true|false) - When set to true and when  
  494.            query analysis is performed, the produced tokens of the  
  495.            field value analysis will be marked as "matched" for every  
  496.            token that is produces by the query analysis  
  497.    -->  
  498.   <requestHandler name="/analysis/field"   
  499.                   startup="lazy"  
  500.                   class="solr.FieldAnalysisRequestHandler" />  
  501.   
  502.   
  503.   <!-- Document Analysis Handler  
  504.   
  505.        http://wiki.apache.org/solr/AnalysisRequestHandler  
  506.   
  507.        An analysis handler that provides a breakdown of the analysis  
  508.        process of provided documents. This handler expects a (single)  
  509.        content stream with the following format:  
  510.   
  511.        <docs>  
  512.          <doc>  
  513.            <field name="id">1</field>  
  514.            <field name="name">The Name</field>  
  515.            <field name="text">The Text Value</field>  
  516.          </doc>  
  517.          <doc>...</doc>  
  518.          <doc>...</doc>  
  519.          ...  
  520.        </docs>  
  521.   
  522.     Note: Each document must contain a field which serves as the  
  523.     unique key. This key is used in the returned response to associate  
  524.     an analysis breakdown to the analyzed document.  
  525.   
  526.     Like the FieldAnalysisRequestHandler, this handler also supports  
  527.     query analysis by sending either an "analysis.query" or "q"  
  528.     request parameter that holds the query text to be analyzed. It  
  529.     also supports the "analysis.showmatch" parameter which when set to  
  530.     true, all field tokens that match the query tokens will be marked  
  531.     as a "match".   
  532.   -->  
  533.   <requestHandler name="/analysis/document"   
  534.                   class="solr.DocumentAnalysisRequestHandler"   
  535.                   startup="lazy" />  
  536.   
  537.   <!-- Echo the request contents back to the client -->  
  538.   <requestHandler name="/debug/dump" class="solr.DumpRequestHandler" >  
  539.     <lst name="defaults">  
  540.      <str name="echoParams">explicit</str>   
  541.      <str name="echoHandler">true</str>  
  542.     </lst>  
  543.   </requestHandler>  
  544.     
  545.   
  546.   
  547.   <!-- Search Components  
  548.   
  549.        Search components are registered to SolrCore and used by   
  550.        instances of SearchHandler (which can access them by name)  
  551.          
  552.        By default, the following components are available:  
  553.          
  554.        <searchComponent name="query"     class="solr.QueryComponent" />  
  555.        <searchComponent name="facet"     class="solr.FacetComponent" />  
  556.        <searchComponent name="mlt"       class="solr.MoreLikeThisComponent" />  
  557.        <searchComponent name="highlight" class="solr.HighlightComponent" />  
  558.        <searchComponent name="stats"     class="solr.StatsComponent" />  
  559.        <searchComponent name="debug"     class="solr.DebugComponent" />  
  560.          
  561.      -->  
  562.   
  563.   <!-- Terms Component  
  564.   
  565.        http://wiki.apache.org/solr/TermsComponent  
  566.   
  567.        A component to return terms and document frequency of those  
  568.        terms  
  569.     -->  
  570.   <searchComponent name="terms" class="solr.TermsComponent"/>  
  571.   
  572.   <!-- A request handler for demonstrating the terms component -->  
  573.   <requestHandler name="/terms" class="solr.SearchHandler" startup="lazy">  
  574.      <lst name="defaults">  
  575.       <bool name="terms">true</bool>  
  576.       <bool name="distrib">false</bool>  
  577.     </lst>       
  578.     <arr name="components">  
  579.       <str>terms</str>  
  580.     </arr>  
  581.   </requestHandler>  
  582.   
  583.   <!-- Legacy config for the admin interface -->  
  584.   <admin>  
  585.     <defaultQuery>*:*</defaultQuery>  
  586.   </admin>  
  587.   
  588. </config>  

 下面我将对其中关键地方加以解释说明:

 lib

<lib> 标签指令可以用来告诉Solr如何去加载solr plugins(Solr插件)依赖的jar包,在solrconfig.xml配置文件的注释中有配置示例,例如:

<lib dir="./lib" regex=”lucene-\w+\.jar”/>

这里的dir表示一个jar包目录路径,该目录路径是相对于你当前core根目录的;regex表示一个正则表达式,用来过滤文件名的,符合正则表达式的jar文件将会被加载

 

dataDir parameter

用来指定一个solr的索引数据目录,solr创建的索引会存放在data\index目录下,默认dataDir是相对于当前core目录(如果solr_home下存在core的话),如果solr_home下不存在core的话,那dataDir默认就是相对于solr_home啦,不过一般dataDir都在core.properties下配置。

     <dataDir>/var/data/solr</dataDir>

 

codecFactory

 用来设置Lucene倒排索引的编码工厂类,默认实现是官方提供的SchemaCodecFactory类。

 

indexConfig Section

solrconfig.xml<indexConfig>标签中间有很多关于此配置项的说明:

<!-- maxFieldLength was removed in 4.0. To get similar behavior, include a

 

         LimitTokenCountFilterFactory in your fieldType definition. E.g.

 

     <filter class="solr.LimitTokenCountFilterFactory" maxTokenCount="10000"/>

提供我们maxFieldLength配置项已经从4.0版本开始就已经被移除了,可以使用配置一个filter达到相似的效果,maxTokenCount即在对某个域分词的时候,最多只提取前10000Token,后续的域值将被抛弃。maxFieldLength若表示1000,则意味着只会对域值的0~1000范围内的字符串进行分词索引。

 

<writeLockTimeout>1000</writeLockTimeout>

writeLockTimeout表示IndexWriter实例在获取写锁的时候最大等待超时时间,超过指定的超时时间仍未获取到写锁,则IndexWriter写索引操作将会抛出异常

 

<maxIndexingThreads>8</maxIndexingThreads>

表示创建索引的最大线程数,默认是开辟8个线程来创建索引

 

<useCompoundFile>false</useCompoundFile>

 

是否开启复合文件模式,启用了复合文件模式即意味着创建的索引文件数量会减少,这样占用的文件描述符也会减少,但这会带来性能的损耗,在Lucene中,它默认是开启,而在Solr中,自从3.6版本开始,默认就是禁用的

 

 <ramBufferSizeMB>100</ramBufferSizeMB>

表示创建索引时内存缓存大小,单位是MB,默认最大是100M,

 

<maxBufferedDocs>1000</maxBufferedDocs>

表示在document写入到硬盘之前,缓存的document最大个数,超过这个最大值会触发索引的flush操作。

Xml代码  收藏代码
  1. <mergePolicy class="org.apache.lucene.index.TieredMergePolicy">  
  2.     <int name="maxMergeAtOnce">10</int>  
  3. <int name="segmentsPerTier">10</int>  
  4. </mergePolicy>  

 用来配置Lucene索引段合并策略的,里面有两个参数:

 

maxMergeAtOne: 一次最多合并段个数

 

segmentPerTier:  每个层级的段个数,同时也是内存buffer递减的等比数列的公比,看源码:

Java代码  收藏代码
  1. // Compute max allowed segs in the index  
  2.     long levelSize = minSegmentBytes;  
  3.     long bytesLeft = totIndexBytes;  
  4.     double allowedSegCount = 0;  
  5.     while(true) {  
  6.       final double segCountLevel = bytesLeft / (double) levelSize;  
  7.       if (segCountLevel < segsPerTier) {  
  8.         allowedSegCount += Math.ceil(segCountLevel);  
  9.         break;  
  10.       }  
  11.       allowedSegCount += segsPerTier;  
  12.       bytesLeft -= segsPerTier * levelSize;  
  13.       levelSize *= maxMergeAtOnce;  
  14.     }  
  15. int allowedSegCountInt = (int) allowedSegCount;  

 <mergeFactor>10</mergeFactor>

 

要理解mergeFactor因子的含义,还是先看看lucene in action中给出的解释:

Xml代码  收藏代码
  1. IndexWriter’s mergeFactor lets you control how many Documents to store in memory  
  2. before writing them to the disk, as well as how often to merge multiple index  
  3. segments together. (Index segments are covered in appendix B.) With the default  
  4. value of 10, Lucene stores 10 Documents in memory before writing them to a single  
  5. segment on the disk. The mergeFactor value of 10 also means that once the  
  6. number of segments on the disk has reached the power of 10, Lucene merges  
  7. these segments into a single segment.  
  8. For instance, if you set mergeFactor to 10, a new segment is created on the disk  
  9. for every 10 Documents added to the index. When the tenth segment of size 10 is  
  10. added, all 10 are merged into a single segment of size 100. When 10 such segments  
  11. of size 100 have been added, they’re merged into a single segment containing  
  12. 1,000 Documents, and so on. Therefore, at any time, there are no more than 9  
  13. segments in the index, and the size of each merged segment is the power of 10.  
  14. There is a small exception to this rule that has to do with maxMergeDocs,  
  15. another IndexWriter instance variable: While merging segments, Lucene ensuresthat no segment with more than maxMergeDocs Documents is created. For instance,  
  16. suppose you set maxMergeDocs to 1,000. When you add the ten-thousandth Document,  
  17. instead of merging multiple segments into a single segment of size 10,000,  
  18. Lucene creates the tenth segment of size 1,000 and keeps adding new segments  
  19. of size 1,000 for every 1,000 Documents added.  

 IndexWriter的mergeFactory允许你来控制索引在写入磁盘之前内存中能缓存的document数量,以及合并

多个段文件的频率。默认这个值为10. 当往内存中存储了10document,此时Lucene还没有把单个段文件

写入磁盘,mergeFactor值等于10也意味着当硬盘上的段文件数量达到10,lucene将会把这10个段文件合

并到一个段文件中。例如:如果你把mergeFactor设置为10,当你往索引中添加了10个document,一个段

文件将会在硬盘上被创建,当第10个段文件被添加时,这10个段文件就会被合并到1个段文件,此时这个

段文件中有100个document,当10个这样的包含了100个document的段文件被添加时,他们又会被合并到一

个新的段文件中,而此时这个段文件包含 1000个document,以此类推。所以,在任何时候,在索引中不

存在超过9个段文件。每个被合并的段文件包含的document个数都是10,但这样有点小问题,我们还必须

 设置一个maxMergeDocs变量,当合并段文件的时候,lucene必须确保没有哪个段文件超过maxMergeDocs

 变量规定的最大document数量。设置maxMergeDocs的目的是为了防止单个段文件中包含的document数量

过大,假定你把maxMergeDocs设置为1000,当你创建第10个包含1000个document段文件的时候,这时并

 不会触发段文件合并(如果没有设置maxMergeDocs为100的话,按理来说,这10个包含了1000个document

的段文件将会被合并到一个包含了10000个document的段文件当中,但maxMergeDocs限制了单个段文件中

最多包含1000个document,所以此时并不会触发段合并操作)。影响段合并还有一些其他参数,比如:

 

mergeFactor:当大小几乎相当的段的数量达到此值的时候,开始合并。

minMergeSize:所有大小小于此值的段,都被认为是大小几乎相当,一同参与合并。

maxMergeSize:当一个段的大小大于此值的时候,就不再参与合并。

maxMergeDocs:当一个段包含的文档数大于此值的时候,就不再参与合并。

 

段合并分两个步骤:

 1.首先筛选出哪些段需要合并,这一步由MergePolicy合并策略类来决定

2.然后就是真正的段合并过程了,这一步是交给MergeScheduler来完成的,MergeScheduler类主要做两件事:

      A.对存储域,项向量,标准化因子即norms等信息进行合并

      B.对倒排索引信息进行合并

     尼玛扯远了,接着继续我们的solrconfig.xml中影响索引创建的一些参数配置;

 

<mergeScheduler class="org.apache.lucene.index.ConcurrentMergeScheduler"/>

mergeScheduler刚才提到过了,这是用来配置段合并操作的处理类。默认实现类是Lucene中自带的ConcurrentMergeScheduler

 

<lockType>${solr.lock.type:native}</lockType>

这个是用来指定Lucene中LockFactory实现的,可配置项如下:

Xml代码  收藏代码
  1. single = SingleInstanceLockFactory - suggested for a  
  2.                   read-only index or when there is no possibility of  
  3.                   another process trying to modify the index.  
  4.          native = NativeFSLockFactory - uses OS native file locking.  
  5.                   Do not use when multiple solr webapps in the same  
  6.                   JVM are attempting to share a single index.  
  7.          simple = SimpleFSLockFactory  - uses a plain file for locking  
  8.   
  9.          Defaults: 'native' is default for Solr3.6 and later, otherwise  
  10.                    'simple' is the default  

 single:表示只读锁,没有另外一个处理线程会去修改索引数据

native:即Lucene中的NativeFSLockFactory实现,使用的是基于操作系统的本地文件锁

simple:即Lucene中的SimpleFSLockFactory实现,通过在硬盘上创建write.lock锁文件实现

Defaults:从solr3.6版本开始,这个默认值是native,否则,默认值就是simple,意思就是说,你如果配置为Defaults,到底使用哪种锁实现,取决于你当前使用的Solr版本。

 

<unlockOnStartup>false</unlockOnStartup>

如果这个设置为true,那么在solr启动后,IndexWriter和commit提交操作拥有的锁将会被释放,这会打破Lucene的锁机制,请谨慎使用。如果你的lockType设置为single,那么这个配置true or false都不会产生任何影响。

 

<deletionPolicy class="solr.SolrDeletionPolicy">

用来配置索引删除策略的,默认使用的是Solr的SolrDeletionPolicy实现。如果你需要自定义删除策略,那么你需要实现Lucene的org.apache.lucene.index.IndexDeletionPolicy接口。

 

<jmx />

这个配置是用来在Solr中启用JMX,有关这方面的详细信息,请移步到Solr官方Wiki,访问地址如下:

http://wiki.apache.org/solr/SolrJmx

 

<updateHandler class="solr.DirectUpdateHandler2">

指定索引更新操作处理类,DirectUpdateHandler2是一个高性能的索引更新处理类,它支持软提交

 

<updateLog>

      <str name="dir">${solr.ulog.dir:}</str>

</updateLog>

<updateLog>用来指定上面的updateHandler的处理事务日志存放路径的,默认值是solr的data目录即solr的dataDir配置的目录。

 

<query>标签是有关索引查询相关的配置项

 

<maxBooleanClauses>1024</maxBooleanClauses>

表示BooleanQuery最大能链接多少个子Query,当不同的core下的solrconfig.xml中此配置项的参数值配置的不一样时,以最后一个初始化的core的配置为准。

 

<filterCache class="solr.FastLRUCache"

                 size="512"

                 initialSize="512"

                 autowarmCount="0"/>

用来配置filter过滤器的缓存相关的参数

 

<queryResultCache class="solr.LRUCache"

                      size="512"

                      initialSize="512"

                      autowarmCount="0"/>

用来配置对Query返回的查询结果集即TopDocs的缓存

 

<documentCache class="solr.LRUCache"

                   size="512"

                   initialSize="512"

                   autowarmCount="0"/>

用来配置对Document中存储域的缓存,因为每次从硬盘上加载存储域的值都是很昂贵的操作,这里说的存储域指的是那些Store.YES的Field,所以你懂的。

 

<fieldValueCache class="solr.FastLRUCache"

                        size="512"

                        autowarmCount="128"

                        showItems="32" />

这个配置是用来缓存Document id的,用来快速访问你的Document id的。这个配置项默认就是开启的,无需显式配置。

 

<cache name="myUserCache"

              class="solr.LRUCache"

              size="4096"

              initialSize="1024"

              autowarmCount="1024"

              regenerator="com.mycompany.MyRegenerator"

              />

这个配置是用来配置你的自定义缓存的,你自己的Regenerator需要实现Solr的CacheRegenerator接口。

 

<enableLazyFieldLoading>true</enableLazyFieldLoading>

表示启用存储域的延迟加载,前提是你的存储域在Query的时候没有显式指定需要return这个域。

 

<useFilterForSortedQuery>true</useFilterForSortedQuery>

表示当你的Query没有使用score进行排序时,是否使用filter来替代Query.

Xml代码  收藏代码
  1. <listener event="newSearcher" class="solr.QuerySenderListener">  
  2.       <arr name="queries">  
  3.         <!--  
  4.            <lst><str name="q">solr</str><str name="sort">price asc</str></lst>  
  5.            <lst><str name="q">rocks</str><str name="sort">weight asc</str></lst>  
  6.           -->  
  7.       </arr>  
  8. </listener>  

   QuerySenderListener用来监听查询发送过程,即你可以在Query请求发送之前追加一些请求参数,如上面给的示例中,可以追加qery关键字以及sort排序规则。

 

<requestDispatcher handleSelect="false" >

设置为false即表示Solr 服务器端不接收/select请求,即如果你请求http://localhost:8080/solr/coreName/select?qt=xxxx时,将会返回一个404,

这个select请求是为了兼容先前的旧版本,已经不推荐使用。

 

<httpCaching never304="true" />

表示solr服务器段永远不返回304,那http响应状态码304表示什么呢?表示服务器端告诉客户端,你请求的资源尚未被修改过,我返回给你的是上次缓存的内容。Never304即告诉服务器,不管我访问的资源有没有更新过,都给我重新返回不走Http缓存。这属于Http协议相关知识,不清楚的请去Google HTTP协议详细了解去。

 

Xml代码  收藏代码
  1. <requestHandler name="/query" class="solr.SearchHandler">  
  2.     <lst name="defaults">  
  3.       <str name="echoParams">explicit</str>  
  4.       <str name="wt">json</str>  
  5.       <str name="indent">true</str>  
  6.     </lst>  
  7.   </requestHandler>  

 这个requestHandler配置的是请求URL  /query跟请求处理类SearcherHandler之间的一个映射关系,即你访问http://localhost:8080/solr/coreName/query?q=xxx时,会交给SearcherHandler类来处理这个http请求,你可以配置一些参数来干预SearcherHandler处理细节,比如echoParams表示是否打印HTTP请求参数,wt即writer type,即返回的数据的MIME类型,如json,xml等等,indent表示返回的json或者XML数据是否需要缩进,否则返回的数据没有缩进也没有换行,不利于阅读。

 

其他的一些requestHandler说明就略过了,其实都大同小异,就是一个请求URL跟请求处理类的一个映射,就好比SpringMVC中请求URL和Controller类的一个映射。

 

<searchComponent name="spellcheck" class="solr.SpellCheckComponent">

用来配置查询组件比如SpellCheckComponent拼写检查,有关拼写检查的详细配置说明留到以后说到SpellCheck时再说吧。

 

<searchComponent name="terms" class="solr.TermsComponent"/>

用来返回所有的Term以及每个document中Term的出现频率

 

<searchComponent class="solr.HighlightComponent" name="highlight">

用来配置关键字高亮的,Solr高亮配置的详细说明这里暂时先略过,这篇我们只是先暂时大致了解下每个配置项的含义即可,具体如何使用留到后续再深入研究。

 

有关searchComponent查询组件的其他配置我就不一一说明了,太多了。你们自己看里面的英文注释吧,如果你实在看不懂再来问我。

Xml代码  收藏代码
  1. <queryResponseWriter name="json" class="solr.JSONResponseWriter">  
  2.     <!-- For the purposes of the tutorial, JSON responses are written as  
  3.      plain text so that they are easy to read in *any* browser.  
  4.      If you expect a MIME type of "application/json" just remove this override.  
  5.     -->  
  6.     <str name="content-type">text/plain; charset=UTF-8</str>  
  7. </queryResponseWriter>  

 这个是用来配置Solr响应数据转换类,JSONResponseWriter就是把HTTP响应数据转成JSON格式,content-type即response响应头信息中的content-type,即告诉客户端返回的数据的MIME类型为text/plain,且charset字符集编码为UTF-8.

内置的响应数据转换器还有velocity,xslt等,如果你想自定义一个基于FreeMarker的转换器,那你需要实现Solr的QueryResponseWriter接口,模仿其他实现类,你懂的,然后在solrconfig.xml中添加类似的<queryResponseWriter配置即可

 

   最后需要说明下的是solrconfig.xml中有大量类似<arr> <list> <str> <int>这样的自定义标签,下面做个统一的说明:

 这张图摘自于Solr in Action这本书,由于是英文的,所以我稍微解释下:

arr:即array的缩写,表示一个数组,name即表示这个数组参数的变量名

lst即list的缩写,但注意它里面存放的是key-value键值对

bool表示一个boolean类型的变量,name表示boolean变量名,

同理还有int,long,float,str等等

Str即string的缩写,唯一要注意的是arr下的str子元素是没有name属性的,而list下的str元素是有name属性的

 

最后总结下:

solrconfig.xml中的配置项主要分以下几大块:

     1.依赖的lucene版本配置,这决定了你创建的Lucene索引结构,因为Lucene各版本之间的索引结构并不是完全兼容的,这个需要引起你的注意。

     2.索引创建相关的配置,如索引目录,IndexWriterConfig类中的相关配置(它决定了你的索引创建性能)

     3.solrconfig.xml中依赖的外部jar包加载路径配置

     4.JMX相关配置

     5.缓存相关配置,缓存包括过滤器缓存,查询结果集缓存,Document缓存,以及自定义缓存等等

     6.updateHandler配置即索引更新操作相关配置

     7.RequestHandler相关配置,即接收客户端HTTP请求的处理类配置

     8.查询组件配置如HightLight,SpellChecker等等

     9.ResponseWriter配置即响应数据转换器相关配置,决定了响应数据是以什么样格式返回给客户端的。

     10.自定义ValueSourceParser配置,用来干预Document的权重、评分,排序

 

     solrconfig.xml就解释到这儿了,理解这些配置项是为后续Solr学习扫清障碍。有些我没说到的或者我有意略过的,就留给你们自己去阅读和理解了,毕竟内容太多,1000多行的配置,一行不拉的解释完太耗时,有些都是类似的配置,我想你们应该能看懂。

  如果你还有什么问题请加我Q-Q:7-3-6-0-3-1-3-0-5,

或者加裙
一起交流学习!

转载:http://iamyida.iteye.com/blog/2211728

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/284695.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

.NET 7 新增速率限制 (Rate Limiting) 功能,轻松限制请求数量

前言.NET 7 内置了速率限制&#xff08;Rate Limiting&#xff09;功能&#xff0c;速率限制指的是限制可访问资源的请求数。例如数据库每分钟可以安全处理 1000 个请求&#xff0c;再多不确定会不会崩。这时就可以在应用程序中放一个速率限制器&#xff0c;规定每分钟只允许 …

Linux Tomcat8 启动堆内存溢出

今天在部署一个开源项目的时候&#xff0c;Tomcat8启动异常&#xff0c;报错信息&#xff1a; Exception in thread "RMI TCP Connection(idle)" java.lang.OutOfMemoryError: PermGen space 根据报错信息我们可以看出是堆内存不够。所以需要手动设置堆内存大小&…

【BIM入门实战】Revit视图中图元看不见的原因总结

在Revit模型设计的过程中&#xff0c;有时会提示绘制的图元不可见&#xff0c;通常情况下&#xff0c;可以采用以下三种方法让隐藏的图元显示出来。 原因一&#xff1a;视图范围 平面视图的形成是由操作平面对三维进行 水平切割的俯视图&#xff0c;如果绘制的图元不可见&…

用C#为国产智能手表写“Hello, China. ”

在此之前&#xff0c; 我写过几篇如何使用C#编写STM32程序的例子&#xff0c; 那么同样&#xff0c; ESP32下我们也可以使用C#&#xff0c;我们依然仰仗于一直在发展壮大的 .Net nanoFramework , 目前他支持的开发板越来越多 &#xff0c; 支持的芯片种类也越来越多&#xff0c…

数据迁移 (选做)

1. pip install flask-migrate #Flask-Migrate 是一个数据迁移框架,需要通过Flask-script库来操作. 2. pip install flask-script #通过命令行来操作Flask 3. 新建模型更改文件&#xff1a;manage.py from flask_script import Managerfrom flask_migrate import Migrate, Mi…

驱动之LCD的介绍与应用20170209

本文主要介绍的是LCD的介绍与应用&#xff0c;直接看个人笔记即可: 转载于:https://www.cnblogs.com/yuweifeng/p/6382551.html

ArcGIS实验教程——实验四十四:ArcGIS地图浮雕效果制作完整案例教程

ArcGIS制作地图时可以制作出很多很炫的效果,比如地图阴影、地图晕渲效果、浮雕效果、三维效果等等。本实验讲解在ArcGIS中制作浮雕效果地图,效果如下所示: 扩展阅读:【ArcGIS Pro微课1000例】0016:ArcGIS Pro 2.8浮雕效果地图制图案例教程 1. 加载矢量数据 加载实验数据包…

Mysql,SqlServer,Oracle主键自动增长的设置

参考文献 http://blog.csdn.net/andyelvis/article/details/2446865 1、把主键定义为自动增长标识符类型 MySql 在mysql中&#xff0c;如果把表的主键设为auto_increment类型&#xff0c;数据库就会自动为主键赋值。例如&#xff1a; create table customers(id int auto_incre…

【ArcGIS Pro微课1000例】0016:ArcGIS Pro 2.8浮雕效果地图制图案例教程

ArcGIS Pro制作地图时可以制作出很多很炫的效果,比如地图阴影、地图晕渲效果、浮雕效果、三维效果等等。本实验讲解在ArcGIS Pro 2.8中制作浮雕效果地图,效果如下所示: 【参考阅读】:ArcGIS实验教程——实验四十四:ArcGIS地图浮雕效果制作完整案例教程 1. 加载矢量数据 …

用正则实现多行文本合并,从而保存为csv文件

有如下文本&#xff0c;想实现每三行合并为一行&#xff0c;最终生成csv文件 分数 人数 累计人数 661及以上 23 23 660 3 26 659 5 31 658 5 36 657 9 45 656 10 55 655 4 59 654 6 65 653 15 80查找项&#xff1a; ^(.) ^(.) ^(.)替换项&#xff1a; $1,$2,$3替换结果&…

聊一聊 C# 后台GC 到底是怎么回事?

一&#xff1a;背景 写这一篇的目的主要是因为.NET领域内几本关于阐述GC方面的书&#xff0c;都是纯理论&#xff0c;所以懂得人自然懂&#xff0c;不懂得人也没法亲自验证&#xff0c;这一篇我就用 windbg 源码 让大家眼见为实。二&#xff1a;为什么要引入后台GC 1. 后台GC到…

【BIM入门实战】Revit中的墙体层次以及常见问题解答

一、Revit墙体的层次 1. Revit墙体的层次如图 Revit绘制墙体时,要先选择定位线,可以选核心层中心线,也可以选墙中心线,当墙体为对称时,核心层中心线与墙中心线会重合。 2. 具体层次 1)结构[1]:必须在核心边界内 2)衬底[2]:其他材质基础的材料,如胶合板或石膏板 3…

【系统设计】分布式键值数据库

键值存储 ( key-value store )&#xff0c;也称为 K/V 存储或键值数据库&#xff0c;这是一种非关系型数据库。每个值都有一个唯一的 key 关联&#xff0c;也就是我们常说的 键值对。常见的键值存储有 Redis, Amazon DynamoDB&#xff0c;Microsoft Azure Cosmos DB&#xff0c…

【BIM入门实战】Revit建筑墙体:构造、包络、叠层图文详解

本文主要讲解Revit建筑墙体:构造、包络、叠层。 一、基本墙 第一步: 选择菜单栏的【建筑】选项卡中的【墙】下拉菜单→【属性】面板中切换至基本墙→点击属性面板中的【编辑类型】,弹出如下墙体对话框。 第二步: 选择【复制】按钮→重新进行编辑名称,命名为“外墙-1F-2…

win11 恢复win10开始菜单及任务栏

Windows Registry Editor Version 5.00[HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\Advanced] "Start_ShowClassicMode"dword:00000001 "TaskbarSi"dword:00000000将上述代码存为reg文件&#xff0c;双击导入注册表。 任务栏…

CentOS安装Tomcat

1. 下载Tomcat安装包&#xff1a; Tomcat官网 解压下载下来的tar.gz至任意目录下&#xff0c;执行命令&#xff1a; Java代码 tar -xzf apache-tomcat-7.0.56.tar.gz 解压后如图&#xff1a; 如果是在windows上&#xff0c;则直接解压zip包到任意目录&…

【BIM+GIS】ArcGIS Pro2.8如何打开Revit模型,BIM和GIS融合?

ArcGIS Pro2.8中,可以直接打开Revit模型(.rvt)项目文件,实现了从数据格式方面BIM与GIS的有机融合,具体操作如下所示: 1. Revit2018模型绘制 打开Revit2018软件,选择【建筑样板】,打开标高1楼层平面,新建一个简单的户型:包括四面墙体、2个门和一扇窗户,如下图所示。…

Edge 开发者沙龙|一小时精通Edge扩展开发

点击蓝字关注我们编辑&#xff1a;Alan Wang排版&#xff1a;Rani Sun微软 Reactor 为帮助广开发者&#xff0c;技术爱好者&#xff0c;更好的学习 .NET Core, C#, Python&#xff0c;数据科学&#xff0c;机器学习&#xff0c;AI&#xff0c;区块链, IoT 等技术&#xff0c;将…

tomcat 开启远程debug

1、linux服务器上tomcat配置startup.sh 文件末尾添加&#xff08;不换行&#xff09;&#xff1a;declare -x CATALINA_OPTS"-server -Xdebug -Xnoagent -Djava.compilerNONE -Xrunjdwp:transportdt_socket,servery,suspendn,address9876"2、eclipse配置&#xff1a;…

【测绘程序设计】坐标反算神器V1.0(附C/C#/VB源程序)

【拓展阅读】:【测绘程序设计】坐标正算神器V1.0(附C/C#/VB源程序) 一、坐标反算原理 ​坐标反算:已知两点坐标,反求边长和方位角,称为坐标反算。 原理坐标系: 计算公式: 二、C#程序实现 1. 界面设计 2