當前位置:首頁 » 存儲配置 » solr存儲空字元串

solr存儲空字元串

發布時間: 2022-06-28 04:17:45

❶ solr搜索對null字元串怎麼處理的

solr搜索對null字元串怎麼處理的
我覺得應該搞清楚字元串對象和字元串變數這兩個概念的區別。字元串變數保存一個字元串對象的引用。判斷字元串是否空涉及兩個層次:1、是首先判斷字元串變數的引用是否為空,即空對象的概念,用null來判斷,可以用== null;(注意不能用equals(null),在參數為null情況下,返回值永遠是false);2、是在不為空對象的情況下,在判斷字元串對象是否為空串,即長度為0.用length()==0。 關鍵是搞清楚字元串對象為空和空字元串有區別。個人觀點,供參考。

❷ solr和mongodb的區別 存數據為什麼不用solr

嚴格來說,負責數據存儲,但只是一個引擎和插入。就像資料庫的解釋器,怎麼了例如,資料庫的欄位中存儲了一個單詞。當想用這些詞中的一個詞時,普通的資料庫只使用查詢,遍歷每個詞進行模糊匹配,效率低下,有些詞無法查詢,除了一些有分詞功的特殊資料庫,做的事情分詞。然後匹配分詞中是否有詞。當然,為了提高檢索效率,節省內存,做了復雜的事情。所以單純的認為全文資料庫不滿足

❸ solr的索引數據可以存放到資料庫嗎

在solr與tomcat整合文章中,我用的索引庫是mycore,現在就以這個為例。
首先要准備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就可以了。

❹ solr查詢語法 單引號和雙引號的區別

資料庫裡面表示字元串的都是單引號,而不是雙引號。表示空字元串用('')兩個單引號,如果用雙引號就直接出現語法錯誤,如果要表示值為雙引號的字元串應該用('「」'),總之,資料庫里的字元串表示用單引號,而不像其他語言中用雙引號表示字元串

❺ solr具體怎麼處理分詞


分詞器的工作是將一串的文本切成 tokens,這些 token 一般是文本的子集。分析器的處理對象時一個欄位,分詞器則是面對一串文本,分詞器讀取一串文本,然後將其切割成一堆的 token 對象。

字元串中的空格或連接符會被刪除。字元將被添加或者替換,如映射別名,或者縮寫替換縮寫為正常格式。分詞器可能會產生出與原欄位值不一致的token,或者長度與原始文本不一致。這個在token元數據用於文本欄位高亮搜索結果時需要注意。

<</code>fieldTypename="text"class="solr.TextField">
<</code>analyzer>
<</code>tokenizerclass="solr.StandardTokenizerFactory"/>
</</code>analyzer>
</</code>fieldType>

元素的類名稱不是一個真實的分詞器,但是它指向一個實現了org.apache.solr.analysis.TokenizerFactory介面的類。這個工廠在需要的時候會創建一個分詞器的實例。工廠創建出來的對象必須繼承org.apache.lucene.analysis.TokenStream.




❻ solr 建索引的時候能對特殊字元做轉義嗎

解決方法:

在搜索的action中將輸入的參數(kw為keywords的縮寫)做轉義處理,即

import org.apache.solr.client.solrj.util.ClientUtils;
String escapedKw = ClientUtils.escapeQueryChars(kw);
然後拿轉義後的escapedKw去solr中查詢,用戶輸入的參數kw的值不變用於回顯到搜索框中。

❼ solr每個數據節點最多能存多少,多大的數據

單個數據節點並無數據量的限制,整個集群能存多少數據取決於名稱節點的內存有多大,所存儲的單個文件的大小取決於整個集群所有數據節點的存儲容量之和有多大

熱點內容
掃描軟體源碼 發布:2022-08-18 10:13:30 瀏覽:34
python修改json 發布:2022-08-18 10:13:25 瀏覽:252
華為手機密碼如何改長度 發布:2022-08-18 10:12:32 瀏覽:139
伺服器雙機熱備如何配置 發布:2022-08-18 10:12:12 瀏覽:974
linux服務自啟動 發布:2022-08-18 10:11:06 瀏覽:365
百度演算法倉 發布:2022-08-18 10:10:50 瀏覽:760
安卓微信怎麼調整字樣式 發布:2022-08-18 10:08:12 瀏覽:839
聯想存儲器 發布:2022-08-18 10:07:54 瀏覽:144
鏈接伺服器失敗指什麼 發布:2022-08-18 10:07:41 瀏覽:495
如何注冊一個新伺服器 發布:2022-08-18 10:06:30 瀏覽:421