2. 删除索引 1)
删除制定ID的索引
删除查询到的索引数据
删除所有索引数据
通过HTTP POST将命令发往: http://localhost:8080/solr/update
注:以上xml文件通过HTTP POST将命令发往在 http://192.168.10.85:18080/solr/update/,多核心时为这
个地址http://192.168.10.85:18080/solr/core0/update/
3.5.2 批量索引操作
对原有系统已有的数据或需要索引的数据量较大的情况,需要进行批量的索引操作 1. 通过CVS文件的方式提交
直接采用通过http方式调用solr的接口方式,效率较差,采用solr本身对csv 的支持
( http://wiki.apache.org/solr/UpdateCSV ),将数据导出为csv格式,然后调用solr的csv接口http://localhost:8080/solr/update/csv 具体操作步聚:
1.修改conf/solrconfig.xml 1)新增csv处理配置项
curl http://localhost:8983/solr/update/csv?stream.file=exampledocs/books.csv&stream.contentType=text/plain;charset=utf-8 4/17/2013 版权所有,侵权必究All rights reserved 第37页,共58页Page 37 , Total58 #NOTE: The full path, or a path relative to the CWD of the running solr server must be used. 2. 数据库数据导入生成索引(DataImportHandler DIH) 写程序可以将数据读出100条,如果你的内存够大,可以是1000条甚至更多,然后放入Collection中,批量提交至solr。或者读取数据写入xml文件中,再将该文件提交到solr等等。但是,我们还可以通过配置文件直接读取数据库建立索引。 1) 全量更新索引 一、提供对应数据库的jdbc驱动。 将jdbc驱动放在TOMCAT_HOME\\webapps\\solr\\WEB-INF\\lib目录下。 二、在C:\\solr-tomcat\\solr\\conf目录下新建db文件夹,在db文件夹中新建db-data-config.xml内容如下: 三、修改C:\\solr-tomcat\\solr\\conf目录下的solrconfig.xml文件。在相应的位置添加如下代码: filed:属性column是数据库的字段,name是filed的名字,即schema中的field name。 更多请参考官方wiki:http://wiki.apache.org/solr/DataImportHandler 四、启动TOMCAT,输入地址进行导入,导入分为多种模式:我用的是完全导入模式。 http://localhost:8080/solr/dataimport?command=full-import 结果: 00C:\\solr-tomcat\\solr\\conf\\db\\db-data-config.xmlfull-importidle1202009-09-05 21:28:08Indexing completed. Added/Updated: 2 documents. Deleted 0 documents.2009-09-05 21:28:092009-09-05 21:28:090:0:0.579This response format is experimental. It is likely to change in the future. 五、再去查询你刚才提交的数据。 4/17/2013 版权所有,侵权必究All rights reserved 第38页,共58页Page 38 , Total58 上面的例子只不过是很简单的一个部分。针对solr的 MultiCore,通过配置db-data-config.xml也可以实现,还有多表,或者多表关联等等操作只要在db-data- config.xml配置清楚都可以进行数据的导入。 在solr1.4中还有更多的扩展功能,这些功能为重建索引提供能很方便的操作。而且datasource不单单指的是database,可以是xml文件,还可以是来自网络上的等等。 2) 增量更新索引 1、首先要确认表中有last_modified字段。 2、修改C:\\solr-tomcat\\solr\\conf\\db\\db-data-config.xml文件,内容如下: 3.6 3.6.1 如何进行搜索 搜索语法 1. solr 查询参数说明 1) 常用 1) q - 查询字符串,必须的。 2) fl - 指定返回那些字段内容,用逗号或空格分隔多个。 3) start - 返回第一条记录在完整找到结果中的偏移位置,0开始,一般分页用。 4) rows - 指定返回结果最多有多少条记录,配合start来实现分页。 5) sort - 排序,格式:sort= (inStock desc, price asc)表示先 “inStock” 降序, 再 “price” 升序,默认是相关性降序。 注:排序字段 只能针对数值型如:int,dobuble等… 4/17/2013 版权所有,侵权必究All rights reserved 第39页,共58页Page 39 , Total58 6) wt - (writer type)指定输出格式,可以有 xml, json, php, phps, 后面 solr 1.3增加的,要用通知 我们,因为默认没有打开。 7) fq - (filter query)过虑查询,作用:在q查询符合结果中同时是fq查询符合的,例如: q=mm&fq=date_time:[20081001 TO 20091031],找关键字mm,并且date_time是20081001到20091031之间的。官方文档: http://wiki.apache.org/solr/CommonQueryParameters#head-6522ef80f22d0e50d2f12ec487758577506d6002 2) 不常用 1) q.op - 覆盖schema.xml的defaultOperator(有空格时用\还是用\操作逻辑),一般默 认指定 2) df - 默认的查询字段,一般默认指定 3) qt - (query type)指定那个类型来处理查询请求,一般不用指定,默认是standard。 3) 其它 1) indent - 返回的结果是否缩进,默认关闭,用 indent=true|on 开启,一般调试 json,php,phps,ruby输出才有必要用这个参数。 2) version - 查询语法的版本,建议不使用它,由服务器指定默认值。 2. Solr的检索运算符 1. “:” 指定字段查指定值,如返回所有值*:* 2. “?” 表示单个任意字符的通配 3. “*” 表示多个任意字符的通配(不能在检索的项开始使用*或者?符号) 4. “~” 表示模糊检索,如检索拼写类似于”roam”的项这样写:roam~将找到形如foam和roams的单词;roam~0.8,检索返回相似度在0.8以上的记录。 5. 邻近检索,如检索相隔10个单词的”apache”和”jakarta”,”jakarta apache”~10 6. “^” 控制相关度检索,如检索jakarta apache,同时希望去让”jakarta”的相关度更加好,那么在其后加上”^”符号和增量值,即jakarta^4 apache 7. 布尔操作符AND、|| 8. 布尔操作符OR、&& 9. 布尔操作符NOT、!、- (排除操作符不能单独与项使用构成查询) 10.“+” 存在操作符,要求符号”+”后的项必须在文档相应的域中存在 11. ( ) 用于构成子查询 12. [] 包含范围检索,如检索某时间段记录,包含头尾,date:[200707 TO 200710] 13. {} 不包含范围检索,如检索某时间段记录,不包含头尾 date:{200707 TO 200710} 注:范围检索字段只适用于:String,int,dobule,date不能用于long型的字段 14. \\ 转义操作符,特殊字符包括+ - && || ! ( ) { } [ ] ^ ” ~ * ? : \\ 3. solr查询的一些常用语法 1、首先假设我的数据里fields有:name, tel, address 预设的搜寻是name这个字段, 如果要搜寻的数据刚好就是 name 这个字段,就不需要指定搜寻字段名称。 2、查询规则: 如欲查询特定字段(非预设字段),请在查询词前加上该字段名称加 “:” (不包含”号) 符号, 例如: address:北京市海淀区上地软件园 tel:88xxxxx1 1>. q代表query input 2>. version代表solr版本(建议不要变动此变量) 4/17/2013 版权所有,侵权必究All rights reserved 第40页,共58页Page 40 , Total58

