在Apache.Solr.3.Enterprise.Search.Server中,作者强烈建议使用多内核,并且与其后面的4.0版本多核有可能是默认设置,刚好项目需要用到多核,研究配置成功,其实也很简单。
因为要用到的两个核是不同索引,不同solrconfig和schema,所以要分别把它们的配置、data放到单独目录便于管理。
1. 在solr.home目录下,新建(若有则修改)solr.xml,代码如下:
<?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.
-->
<!--
All (relative) paths are relative to the installation path
persistent: Save changes made via the API to this file
sharedLib: path to a lib directory that will be shared across all cores
-->
<solr persistent="false" sharedLib="lib">
<!--
adminPath: RequestHandler path to manage cores.
If 'null' (or absent), cores will not be manageable via request handler
-->
<cores adminPath="/admin/cores" shareSchema="true">
<core name="core_bw" instanceDir="core_bw" dataDir="./data" />
<core name="core_bw2" instanceDir="core_bw2" dataDir="./data" />
</cores>
</solr>
当然,这个solr.xml也可以从下载的solr中找到,在example\solr下。
2. 把每个core对应的data、conf文件夹分别copy到solr.home下的instanceDir目录下(core_bw和core_bw2),启动tomcat,则能看到solr管理页面cores栏,会出现两个可选核心。
3. 以前的访问路径需要做相应修改,例如:
前:http://localhost:8080/solr/search1
后:http://localhost:8080/solr/core_bw/search1
原文介绍:
Configuring solr.xml
When Solr starts up, it checks for the presence of a solr.xml file in the solr.home
directory. If one exists, then it loads up all the cores defined in solr.xml . We've used
multiple cores in the sample Solr setup shipped with this book to manage the various
indexes used in the examples.
You can see the multicore configuration at ./examples/cores/solr.xml:
<solr persistent="false" sharedLib="lib">
<coresadminPath="/admin/cores" shareSchema="true">
<core name="mbtracks" instanceDir="mbtype"
dataDir="../../cores_data/mbtracks" />
<core name="mbartists" instanceDir="mbtype"
dataDir="../../cores_data/mbartists" />
<core name="mbreleases" instanceDir="mbtype"
dataDir="../../cores_data/mbreleases" />
<core name="crawler" instanceDir="crawler"
dataDir="../../cores_data/crawler" />
<core name="karaoke" instanceDir="karaoke"
dataDir="../../cores_data/karaoke" />
</cores>
</solr>
Chapter 8
[ 257 ]
Notice that three of the cores: mbtracks , mbartists, and mbreleases all share the
same instanceDir of mbtype? This allows you to make configuration changes in
one location and affect all three cores.
Some of the key multicore configuration values are:
• persistent="false" specifies that any changes we make at runtime to the
cores, like renaming them, are not persisted. If you want to persist changes
to the cores between restarts, then set persistent="true". Note, this means
the solr.xml file is regenerated without any original comments and requires
the user running Solr to have write access to the filesystem.
• sharedLib="lib" specifies the path to the lib directory containing shared
JAR files for all the cores. On the other hand, if you have a core with its own
specific JAR files, then you would place them in the core/lib directory. For
example, the karaoke core uses Solr Cell (see Chapter 3, Indexing Data ) for
indexing rich content, so the JARs for parsing and extracting data from rich
documents are located in ./examples/cores/karaoke/lib/.
• adminPath specifies the URL path at which the cores can be managed at
runtime. There's no need to change it from "/admin/cores". See below for
details on the various operations you perform to cores.
• shareSchema allows you to use a single in-memory representation of the
schema for all the cores that use the same instanceDir. This can cut down
on your memory use and startup time, especially in situations where you
have many cores, like if you are streaming in data and generating cores on
the fly. If you are interested in using many cores, you should keep an eye on
SOLR-1293 which is the umbrella JIRA issue for Solr that fully supports lots
of cores. I have seen Solr run with dozens of cores with no issues beyond
increased startup time.
• defaultCoreName, if present defines the core to use if you don't include the
core name in the URL, that is /solr/select?q=*:* . This makes it easier to
upgrade from a single core Solr to a multicore setup without changing client
URLs.
Each core is configured via a fairly obvious set of properties:
• name specifies the name of the core, and therefore what to put in the URL to
access the core.
• instanceDir specifies the path to the directory that contains the conf
directory for the core, and data directory too, by default. A relative path
is relative to solr.home. In a basic single-core setup, this is typically set to
the same place as solr.home. In the preceding example we have three cores
using the same configuration directory, and two that have their own specific
configuration directories.
Deployment
[ 258 ]
• dataDir specifies where to store the indexes and any other supp orting data,
like spell check dictionaries. If you don't define it, then by default each core
stores its information in the <instanceDir>/data directory.
• properties="test.properties" allows you to specify a properties file
made up of name value pairs to load for the core. This is either an absolute
path or relative to the instanceDir