Solr安装配置

原创
2013/05/23 11:45
阅读数 882
一、安装solr
1、下载solr4.3.0(我的环境已经安装好java)
2、移动文件到/usr/local/然后解压
3、进入/usr/local/solr-4.3.0/example/执行
java -jar start.jar
4、浏览器输入192.168.1.250:8983/solr/admin(我安装在内网192.168.1.250虚拟机上):


5、建立索引。新建一个test.xml文件(我在/home/html/下新建的),内容如下:

<add><doc>
	<field name="id">21345</field>
	<field name="name">my name</field>
</doc></add>
/usr/local/solr-4.3.0/example/exampledocs/下执行:
java -jar post.jar /home/html/test.xml
6、查询

二、配置IK分词库
1、下载IK,解压,将其中的jar文件移动到/usr/local/solr-4.3.0/example/solr-webapp/webapp/WEB-INF/lib下


2、配置schema.xml文件
文件位置:

在众多fieldType当中添加一条

<fieldType name="text_ik" class="solr.TextField"> 
     <analyzer class="org.wltea.analyzer.lucene.IKAnalyzer"/> 
</fieldType>
当建立索引时,要对name字段进行分词,在schema.xml中搜索<fields>,将其中的name字段设置:
<field name="name" type="text_general" indexed="true" stored="true"/>
改为:
<field name="name" type="text_ik" indexed="true" stored="true"/>
type的内容即上面刚设置的一个fieldType-text_ik。当建立索引的时候,name字段将按IK进行分词。
3、重新启动

三、其他
1、如果某个字段我需要存入数组格式的数据
在schema.xml文件中的<fields></fields>标签里的<field>字段加上mutiValued="true":


2、使用solr客户端库,推荐Solarium
地址:http://www.solarium-project.org/
因为我使用的是Thinkphp框架,所以将solarium扩展库放到了Extend/Vendor/下,程序里:

public function query(){
	vendor('Solarium.Autoloader');
	Solarium_Autoloader::register();
	$client = new Solarium_Client(C('SOLARIUM'));
	$query = $client->createSelect();
	$query->setQuery('name:这是记录');
	$query->setStart(0)->setRows(20);
	$query->setFields(array('id', 'name', 'price'));
	$query->addSort('price', Solarium_Query_Select::SORT_ASC);
	$hl = $query->getHighlighting();
	$hl->setFields('name');
	$hl->setSimplePrefix('<font color="red">');
	$hl->setSimplePostfix('</font>');
	$resultset = $client->select($query);
	$highlighting = $resultset->getHighlighting();
	foreach ($resultset as $document) {
		echo '<hr/><table>';
		foreach ($document AS $field => $value) {
			if(is_array($value)) $value = implode(', ', $value);
			echo '<tr><th>' . $field . '</th><td>' . $value . '</td></tr>';
		}
		echo '</table><br/><b>Highlighting results:</b><br/>';
		$highlightedDoc = $highlighting->getResult($document->id);
		if($highlightedDoc){
			foreach($highlightedDoc as $field => $highlight) {
				echo implode(' (...) ', $highlight) . '<br/>';
			}
		}
	}
}
运行的结果:

参考: http://blog.csdn.net/chenjia3615349/article/details/8112289

展开阅读全文
打赏
0
3 收藏
分享
加载中
更多评论
打赏
0 评论
3 收藏
0
分享
OSCHINA
登录后可查看更多优质内容
返回顶部
顶部