对 solr1.4版本
- 准备
下载地址 :http://lucene.apache.org/solr
最新源码下载地址 :https://svn.apache.org/repos/asf/lucene/dev/trunk
源码使用说明 ,使用 ant构建 ,
命令 :ant test 用于跑单元测试
ant dist 用于 build,将会生成 jar和 war包
ant example 创建一个可运行的示例 .
ant clean 清理项目
ant run-example 创建并运行该示例 .
ant generate-maven-artifacts 创建一个 maven的构件
ant package 创建 zip, tgz包和 maven构件 .
ant luke 启动 luke. see: http://www.getopt.org/luke/
2 . 目录结构说明
• build: built结束后的存放目录 .
• client: 包含一些特定的语言 APIs,可以直接访问 Solr.其实你可以多种语言 ,比如 Ruby或者 java(SolrJ)通过 HTTP发送 XML给 Solr服务器 .
• dist: 包含了 built的 Solr JAR和 WAR文件和各种组件包
• example: 这是一个安装了 Jetty servlet引擎 ,包括一些示例数据和 Solr的配置。目录结构如下 :
° example/etc: Jetty的配置文件及其它 .
° example/multicore: Solr多核的设置 .
° example/solr: 默认人 solr主目录
° example/webapps: Solr的W eb项目服务目录。默认服务端口为: 8983
• lib: 依赖包。
• site: 管理发布的 Solr网站
• src: 源代码 ,其中包括如下 :
° src/java: Solr的 JAVA源代码 .
° src/scripts: Unix bash脚本 , particularly useful
° src/solrj: Solr的 java客户端 .
° src/test: Solr的 test源代码和 test文件 .
° src/webapp: Solr的 web administration配置界面 ,包括 Java Servlets和 JSPs.其实就是 war文件的组成结构 ,
其中 web/admin/是做为一个 admin用户的界面 ,如果需要 ,你可以修改相应的文件 .
3. solr主目录说明
其实这里主要说明下 solr的配置文件和数据文件 ,基于多核的配置可以参考 conf/multicore.xml
• bin: 建议放置 Solr复制脚本
• conf: 配置文件 .其中两个配置文件比较重要 .
• conf/schema.xml: 做为预期定义的索引字段 schema的定义 .http://localhost:8983/solr/admin/
• conf/solrconfig.xml: Solr主配置文件
• conf/xslt: 这个目录使用 XSLT文件来配置 Solr返回的 XML的查询结果格式 ,格式如 Atom/RSS.
• data: 包含实际 Lucene索引数据 .其实也可以是一个 link文件夹 .
• lib: 信赖包和 war包 .
4. solr环境变量设置
1) 可以设置 solr.solr.home=%solr安装目录 %
2) 可以在 solr的 home目录下执行
cd example
java -jar start.jar
如果只有一个 core,你可以访问 http://localhost:8983/solr/admin/
5. solr快速学习.
说明 :
• SCHEMA: 直接下载 schema配置文件 (XML)
• CONFIG: 指定选择 SCHEMA, 这是 Solr的主配置 .
• ANALYSIS: 这个可以诊断在查询 /索引时的问题 .同样也可以分析查询文本 ,将会有一个分词器一样的屏幕
• SCHEMA BROWSER: 这个是查询由于不同的 schema而表现出不同的数据和索引
• STATISTICS: 这是响应时间和命中率的一个统计信息 .其中包含你的索引里有多少文件 (numDocs),在什么目录 (readerDir) ,注意其中有一个 maxDocs表示已经索引到的 document数量 ,但有的时候是跟 numDocs是样的 ,有的时候不一样 ,这主要是 maxDocs可能是以前的数据 ,如果执行 update后 ,他会变成实际数量 .还有 关于何时加载索引以及索引中有多少文档的信息, 关于用来服务查询的 SolrRequestHandler 的有用信息。 涵盖索引过程的数据,包括添加、删除、提交等的数量。 缓存实现和 hit/miss/eviction 信息 等等.
• INFO: 内部版本的基本信息, p { margin-bottom: 0.21cm; }有关正在运行的 Solr 的版本以及在当前实现中进行查询、更新和缓存所使用的类的详细信息。此外,还包括文件存于 Solr subversion 存储库的何处的信息以及对该文件功能的一个简要描述。
• DISTRIBUTION: 这里是查看分布式 /复制信息 ,以后会讲到 .
• PING: p { margin-bottom: 0.21cm; }向服务器发出 ping 请求,包括在 solrconfig.xml 文件的 admin 部分定义的请求 ,用于检查在分布式过程当中出现的错误 .
• LOGGING: 日志配置信息 ,可以配置每个不同组件的日志输出级别 .
• JAVA PROPERTIES: p { margin-bottom: 0.21cm; }显示当前系统正在使用的所有 Java 系统属性
• THREAD DUMP: 显示 java线程 ,在 java开发者调试时非常有用
FULL INTERFACE: 高级查询或者多条件查询 ,提供更加丰富细致的查询输入接口 .
6. 加载示例数据
所在目录 :example/exampledocs ,命令如下 :
exampledocs$ java -jar post.jar *.xml
以 monitor.xml 为例 :
<add><doc> <field name="id">3007WFP</field> <field name="name">Dell Widescreen UltraSharp 3007WFP</field> <field name="manu">Dell, Inc.</field> <field name="cat">electronics</field> <field name="cat">monitor</field> <field name="features">30" TFT active matrix LCD, 2560 x 1600, .25mm dot pitch, 700:1 contrast</field> <field name="includes">USB cable</field> <field name="weight">401.6</field> <field name="price">2199</field> <field name="popularity">6</field> <field name="inStock">true</field> </doc></add>
咱们可以做一个查询 :比如查询文本 monitor,则会显示如下结果 :
<response> <lst name="responseHeader"> <int name="status">0</int> <int name="QTime">2</int> <lst name="params"> <str name="indent">on</str> <str name="rows">10</str> <str name="start">0</str> <str name="q">monitor</str> <str name="version">2.2</str> </lst> </lst> <result name="response" numFound="2" start="0"> <doc> <arr name="cat"> <str>electronics</str> <str>monitor</str> </arr> <arr name="features"> <str> 19" TFT active matrix LCD, 8ms response time, 1280 x 1024 native resolution </str> </arr> <str name="id">VA902B</str> <bool name="inStock">true</bool> <str name="manu">ViewSonic Corp.</str> <str name="name">ViewSonic VA902B - flat panel display - TFT - 19"</str> <int name="popularity">6</int> <float name="price">279.95</float> <float name="weight">190.4</float> </doc> <doc> <arr name="cat"> <str>electronics</str> <str>monitor</str> </arr> <arr name="features"> <str> 30" TFT active matrix LCD, 2560 x 1600, .25mm dot pitch, 700:1 contrast </str> </arr> <str name="id">3007WFP</str> <bool name="inStock">true</bool> <str name="includes">USB cable</str> <str name="manu">Dell, Inc.</str> <str name="name">Dell Widescreen UltraSharp 3007WFP</str> <int name="popularity">6</int> <float name="price">2199.0</float> <float name="weight">401.6</float> </doc> </result> </response>
其中 URL栏为 :http://localhost:8983/solr/select/?q=monitor&version=2.2&start=0&rows=10&indent=on
参数说明 :
参数 | 描述 | 示例 |
q | Solr 中用来搜索的查询。有关该语法的完整描述,请参阅 参考资料 中的 “ Lucene QueryParser Syntax” 。可以通过追加一个分号和已索引且未进行断词的字段(下面会进行解释)的名称来包含排序信息。默认的排序是 score desc ,指按记分降序排序。 | q=myField:Java AND otherField:developerWorks; date asc 此查询搜索指定的两个字段并根据一个日期字段对结果进行排序。 |
start | 将初始偏移量指定到结果集中。可用于对结果进行分页。默认值为 0 。 | start=15 返回从第 15 个结果开始的结果。 |
rows | 返回文档的最大数目。默认值为 10 。 | rows=25 |
fq | 提供一个可选的筛选器查询。查询结果被限制为仅搜索筛选器查询返回的结果。筛选过的查询由 Solr 进行缓存。它们对提高复杂查询的速度非常有用。 | 任何可以用 q 参数传递的有效查询,排序信息除外。 |
hl | 当 hl=true 时,在查询响应中醒目显示片段。默认为 false 。参看醒目显示参数上的 Solr Wiki 部分可以查看更多选项(见 参考资料)。 | hl=true |
fl | 作为逗号分隔的列表指定文档结果中应返回的 Field 集。默认为 “ *” ,指所有的字段。“ score” 指还应返回记分。 | *,score |