ApacheSolr+PHP進行全文查詢
環境:
JDK 1.6
apache-solr-1.2.0 [http://lucene.apache.org/solr]
tomcat 5.5.17
wamp 2.0
SolrPhpClient 開發包 [https://issues.apache.org/jira/browse/SOLR-341]
1. 安裝solr
a) 下載apache-solr-1.2.0.zip,解壓。將apache-solr-1.2.0dist 下的apache-solr-1.2.0.war 改名為solr.war並拷貝到tomcat目錄下的webapps目錄中。
b) 將apache-solr-1.2.0example 下的 solr 目錄拷貝到任意位置,如:E:solr
c) 在tomcat目錄下的confCatalinalocalhost 目錄中(如果沒有則手工建立該目錄)建立solr.xml檔案,檔案內容如下:
<Context docBase=”D:/tomcat/webapps/solr.war” debug=”0″ crossContext=”true” >
1. <Environment name=”solr/home” type=”java.lang.String” value=”E:/solr” override=”true” />
</Context>
d) 修改tomcat的server.xml檔案,找到<Connector port=”8080″ … 項(假設tomcat監聽8080埠),新增編碼方式,修改後如下<Connector port=”8080″ URIEncoding=”UTF-8″ …
e) 啟動tomcat。在瀏覽器中輸入http://localhost:8080/solr/,出現“Welcom to Solr”頁面,說明安裝成功。
2. 建立自定義索引模式
a) 開啟E:solrconfschema.xml 檔案 找到
<fields>
……
<fields>
替換為
<fields>
1. <field name=”id” type=”string” indexed=”true” stored=”true” required=”true” />
2. <field name=”name” type=” string ” indexed=”true” stored=”true” required=”true” />
3. <field name=”address” type=”text” indexed=”true” stored=”true” multiValued=”true” required=”true” />
</fields>
<defaultSearchField>text</defaultSearchField>
替換為
<defaultSearchField>name</defaultSearchField>
刪除所有< copyField …> 項
3. 建立PHP客戶端
在wamp的www目錄下建立solr目錄。
將SolrPhpClient.zip解壓,並將其中的Apache目錄拷貝到www/solr目錄下。
建立index.php檔案,內容如下:
<!DOCTYPE html PUBLIC “-//W3C//DTD XHTML 1.0 Transitional//EN” “http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd”><html xmlns=”http://www.w3.org/1999/xhtml” xml:lang=”zh-CN” lang=”zh-CN”>
<head>
<meta content=”text/html; charset=UTF-8″ http-equiv=”Content-Type”/>
<title></title>
</head>
<body>
<?php
require_once( `Apache/Solr/Service.php` );
// 連線solr伺服器
$solr = new Apache_Solr_Service( `127.0.0.1`, `8080`, `/solr` );
//測試是否聯通
if ( ! $solr->ping() ) {
echo `Solr service not responding.`;
exit;
}
//
// 建立兩條記錄nuby 和 zhangyan
//
$parts = array(
`nuby` => array(
`id` => 1,
`name` => `張巖`,
`address` => array( `天安門`, `北京天安門` ),
),
`zhangyan` => array(
`partno` => 2,
`name` => `張巖`,
`model` => `北京五道口`,
)
);
$documents = array();
foreach ( $parts as $item => $fields ) {
$part = new Apache_Solr_Document();
foreach ( $fields as $key => $value ) {
if ( is_array( $value ) ) {
foreach ( $value as $datum ) {
$part->setMultiValue( $key, $datum );
}
}
else {
$part->$key = $value;
}
}
$documents[] = $part;
}
//
// 建立索引
//
try {
$solr->addDocuments( $documents );
$solr->commit();
$solr->optimize();
}
catch ( Exception $e ) {
echo $e->getMessage();
}
//
// 查詢
//
$offset = 0;
$limit = 10;
$queries = array(
`id: 1 OR id: 2`,
`name: 張巖`,
`name: 天安門`
);
foreach ( $queries as $query ) {
$response = $solr->search( $query, $offset, $limit );
if ( $response->getHttpStatus() == 200 ) {
if ( $response->response->numFound > 0 ) {
foreach ( $response->response->docs as $doc ) {
echo “$doc->partno $doc->name <br />”;
}
echo `<br />`;
}
}
else {
echo $response->getHttpStatusMessage();
}
}
?>
</body>
</html>
本文轉自holy2009 51CTO部落格,原文連結:http://blog.51cto.com/holy2010/326747
相關文章
- Elasticsearch中的Term查詢和全文查詢Elasticsearch
- 全文查詢的效能優化優化
- 全文索引和查詢概念索引
- PostgreSQL實時高效搜尋-全文檢索、模糊查詢、正則查詢、相似查詢、ADHOC查詢SQL
- 使用MDX進行環比查詢
- oracle全文索引之如何實現查詢Oracle索引
- 如何在Django ORM中進行not查詢?DjangoORM
- filter的pk進行多值查詢操作Filter
- ORDER對查詢結果進行排序排序
- oracle中對LONG列進行查詢Oracle
- 使用Excel進行快速模糊查詢的方法Excel
- JPA使用Specification pattern 進行資料查詢
- java中資料庫查詢,搭配簡單的圖形介面進行查詢Java資料庫
- 自己構建Ajax請求進行模擬QueryTask進行查詢
- 用於對執行慢的查詢進行優化優化
- 如何使用Java Streams進行資料庫查詢?Java資料庫
- 如何使用PL/SQL進行分級查詢WPSQL
- Spinach: 使用Spark SQL進行即席查詢 [session]SparkSQLSession
- 使用T-SQL進行活動目錄查詢SQL
- mysql中文進行全文索引支援問題MySql索引
- Lucene可以對MYSQL進行全文檢索嗎?MySql
- 如何抽取Oracle資料到文字文件進行查詢NAOracle
- Mysql利用Like支援根據匹配度進行查詢MySql
- python對solr進行查詢、插入操作(GET\POST)PythonSolr
- 在Oracle中進行大小寫不敏感的查詢Oracle
- 執行長查詢時,怎樣獲取進度?
- 由於 DNS 查詢故障,DSA 操作無法進行DNS
- 用於對執行慢的查詢進行分析的清單
- 【搜尋引擎】Solr全文檢索近實時查詢優化Solr優化
- 如何在word中進行查詢與替換 word文件中的替換與查詢功能
- 當查詢A表的時候,查詢還沒執行完,為什麼能夠對錶進行刪除?
- DM並行查詢並行
- SpringBoot操作ES進行各種高階查詢Spring Boot
- 如何使用 Eloquent 在兩個日期之間進行查詢?
- 讓OData和NHibernate結合進行動態查詢
- 在Oracle中進行大小寫不敏感的查詢[zt]Oracle
- 查詢RMAN恢復進度
- RMAN備份進度查詢