A. java怎麼調用solr查詢介面
solr官方網站 http://lucene.apache.org/solr/
下面是一個例子:
import org.apache.solr.client.solrj.SolrServer;
import org.apache.solr.client.solrj.SolrServerException;
import org.apache.solr.client.solrj.impl.CommonsHttpSolrServer;
import org.apache.solr.client.solrj.response.QueryResponse;
import org.apache.solr.common.SolrDocument;
import org.apache.solr.common.params.ModifiableSolrParams;
import java.net.MalformedURLException;
public class Main {
public static void main(String[] args) throws MalformedURLException, SolrServerException {
SolrServer server = new CommonsHttpSolrServer("http://localhost:8080/solr");
ModifiableSolrParams params = new ModifiableSolrParams();
// 查詢關鍵詞
params.set("q", "2010");
// 分頁,,start=0就是從0開始,,rows=5當前返回5條記錄,,,第二頁就是變化start這個值為5就可以了。
params.set("start", 0);
params.set("rows", 5);
// 排序,,如果按照id 排序,,那麼將score desc 改成 id desc(or asc)
params.set("sort", "score desc");
// 返回信息 * 為全部 這里是全部加上score,如果不加下面就不能使用score
params.set("fl", "*,score");
QueryResponse response = server.query(params);
// 搜索得到的結果數
System.out.println("Find:"+ response.getResults().getNumFound()+"\n\n");
// 輸出結果
for(SolrDocument doc:response.getResults())
{
System.out.println("id: " + doc.getFieldValue("id").toString());
System.out.println("title: " + doc.getFieldValue("title").toString()+"\n");
}
}
}
B. solr的索引數據可以存放到資料庫嗎
在solr與tomcat整合文章中,我用的索引庫是,現在就以這個為例。
首先要准備jar包:solr-dataimporthandler-4.8.1.jar、solr-dataimporthandler-extras-4.8.1.jar和mysql-connector-java-5.0.7-bin.jar這三個包到solr的tomcat的webapps\solr\WEB-INF\lib下
在這個文件夾的conf下配置兩個文件,添加一個文件。先配置solrconfig.xml。
在該文件下添加一個新節點。
<requestHandler name="/dataimport" class="org.apache.solr.handler.dataimport.DataImportHandler">
<lst name="defaults">
<str name="config">data-config.xml</str>
</lst>
</requestHandler>
在solrconfig.xml的同目錄下創建data-config.xml。
配置:
復制代碼
<dataConfig>
<dataSource type="JdbcDataSource"
driver="com.mysql.jdbc.Driver"
url="jdbc:mysql://localhost:3306/courseman"
user="root"
password="mysql" />
<document>
<entity name="student"
query="SELECT * FROM student">
<field column="id" name="id" />
<field column="name" name="name" />
<field column="gender" name="gender" />
<field column="major" name="major" />
<field column="grade" name="grade" />
</entity>
</document>
</dataConfig>
復制代碼
schemal.xml的配置
復制代碼
<?xml version="1.0" ?>
<!--
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 right 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 of the License at
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.
-->
<schema name="example core one" version="1.1">
<fieldtype name="string" class="solr.StrField" sortMissingLast="true" omitNorms="true"/>
<fieldType name="long" class="solr.TrieLongField" precisionStep="0" positionIncrementGap="0"/>
<fieldType name="int" class="solr.TrieIntField" precisionStep="0" positionIncrementGap="0"/>
<!-- general -->
<field name="id" type="int" indexed="true" stored="true" />
<field name="gender" type="string" indexed="true" stored="true" />
<field name="name" type="string" indexed="true" stored="true" />
<field name="major" type="string" indexed="true" stored="true" />
<field name="grade" type="string" indexed="true" stored="true" />
<field name="_version_" type="long" indexed="true" stored="true"/>
<!-- field to use to determine and enforce document uniqueness. -->
<uniqueKey>id</uniqueKey>
<!-- field for the QueryParser to use when an explicit fieldname is absent -->
<defaultSearchField>name</defaultSearchField>
<!-- SolrQueryParser configuration: defaultOperator="AND|OR" -->
<solrQueryParser defaultOperator="OR"/>
</schema>
復制代碼
默認的文件不是這樣的,稍微改動了一下。
field 的type類型是根據fieldtype 的name定義的。class是solr自定義的不能更改。
shcema.xml文件的field欄位的屬性介紹:
(1)name:欄位名稱
(2)type:欄位類型(此處type不是java類型,而是下面定義的fieldType)
(3)indexed:是否索引看true--solr會對這個欄位進行索引,只有經過索引的欄位才能被搜索、排序等;false--不索引
(4)stored:是否存儲看true--存儲,當我們需要在頁面顯示此欄位時,應設為true,否則false。
(5)required:是否必須看true--此欄位為必需,如果此欄位的內容為空,會報異常;false--不是必需
(6)multiValued:此欄位是否可以保存多個值看
(7)omitNorms:是否對此欄位進行解析看有時候我們想通過某個欄位的完全匹配來查詢信息,那麼設置 indexed="true"、omitNorms="true"。
(8)default:設置默認值
有這樣一個FieldType描述:
<fieldType name="text_general" positionIncrementGap="100">
<analyzer type="index">
<tokenizer/>
<filter ignoreCase="true" words="stopwords.txt" enablePositionIncrements="true" />
<filter/>
</analyzer>
<analyzer type="query">
<tokenizer/>
<filter ignoreCase="true" words="stopwords.txt" enablePositionIncrements="true" />
<filter synonyms="synonyms.txt" ignoreCase="true" expand="true"/>
<filter/>
</analyzer>
</fieldType>
屬性說明:
(1)name:類型名稱,<field>中的type引用的就是這個name
(2)class:solr自定義的類型
(3)<analyzer type="index">定義建立索引時使用的分詞器及過濾器
(4)<analyzer type="query">定義搜索時所使用的分詞器及過濾器
(5)<tokenizer/>定義分詞器
(6)<filter/>定義過濾器
uniqueKey屬性
<uniqueKey>id</uniqueKey>
類似於數據表數據的id,solr索引庫中最好定義一個用於標示document唯一性的欄位,此欄位主要用於刪除document。
defaultSearchField屬性
就是你在做query搜尋時若不指定特定欄位做檢索時, Solr就會只查這個欄位.
<defaultSearchField>default</defaultSearchField>
Field屬性
是用來復制你一個欄位里的值到另一欄位用. 如你可以將name里的東西到major里, 這樣solr做檢索時也會檢索到name里的東西.
<Field source="name" dest="major"/>
現在可以將資料庫的數據導入solr了。
點擊Execute就可以了。
C. linux系統下簡易Solr安裝指南linuxsolr安裝
Linux系統是一種強大的、可移植的多用戶多任務操作系統,已經在數據中心、雲平台等企業環境中廣泛應用。它被廣泛應用於網路服務、資料庫、虛擬機和其他系統中,因其強大的性能和穩定性能而被廣泛應用。與其他操作系統相比,Linux系統具有更多獨特的優勢,其中就包括其開放源代碼的特點,以及它的高性能和穩定性。
Solr是一種開放源代碼的全文檢索平台,可以滿足復雜的搜索需求,包括高性能的搜索和排序,邁達斯的搜索演算法,和分布式體系方式的搜索等。因此,Solr在Linux系統中可以恰當地提供基礎搜索功能,便於開發人員更好地完成搜索相關的設計和開發任務。
下面來簡要說明在Linux系統下Solr的簡易安裝步驟:
1. 准備工作:安裝必要的軟體。為了安裝Solr,我們需要先安裝Java運行環境,以及依賴的支持組件,如Tomcat等。
2. 下載Solr:從Solr官方網站或其他渠道下載solr 6.x.x版本,解壓縮後即可取得solr相關文件。
3. 配置Solr:創建solr實例,編輯solr.in.sh文件,加入solr_home、solr_port等參數。
4. 運行Solr:使用通過bin/solr start命令啟動solr,然後在瀏覽器輸入http://localhost:{solr_port}/就可以訪問solr來管理solr實例。
5. 添加文檔:使用http://localhost:{solr_port}/solr/admin/數據導入界面來增加、刪除、更新文檔和欄位。
以上只是安裝部署Linux系統下的Solr的一個簡易步驟,實際的安裝環境和步驟可能會有所變化。安裝情況具體取決於安裝環境,安裝步驟都可以根據不同的安裝准備工作和配置要求進行相應調整。
總之,安裝Linux系統下的Solr是一些具有一定技術性的工作,需要用戶了解Linux系統和Solr相關技術,並且有能力解決潛在的安裝和調試問題。本文簡單介紹了Linux系統下Solr 安裝簡易指南,希望對大家有所幫助。