原文:http://www.solrtutorial.com/basic-solr-concepts.html
Indexing(索引)
solr有快速显示搜索结果的能力。因为solr不是直接去搜索文本,而是搜索索引。
这个原理就类似想通过某个关键字找到书的某一页都是通过书的索引来查找,而不是每页去匹配这个单词。
solr的这种索引叫倒排序(inverted index),因为他把以为page为中心模型反转了(page-->word),变成了单词为中心的模型(word-->pages)
How Solr represents data
Index由一个或则多个Documents组成,一个Documents包含一个或多个Fields
用数据库术语,一个Document对应一个表,一个Fields对应一个表字段。
Schema
当你添加Document到Solr之前需要先定义Schema,通过schema.xml表示。schema定义了:1.有多少种fields。2.那些field应该使用unique/primary key。3.那些required是必填的。4.如何索引和查询field。
Field Types
在Solr每个field都有类型。Solr扩充了lucene中的各种field type。包括:
float
long
double
date
text
Solr也允许你自定义类型,通过组合filters和tokenizers,一个例子:
<fieldtype name="phonetic" stored="false" indexed="true" class="solr.TextField" >
<analyzer>
<tokenizer class="solr.StandardTokenizerFactory"/>
<filter class="solr.DoubleMetaphoneFilterFactory" inject="false"/>
</analyzer>
</fieldtype>
定义字段Defining a field
<field name="id" type="text" indexed="true" stored="true" multiValued="true"/>
Analysis
当数据被添加到Solr,都会经过各种转换,这个过程叫Analysis阶段。一些常见的转换,比如:转换为小写字母,去掉stop word等等,analysis的结果是一组tokens,然后再被添加为索引。Tokens已经不是原始的文档,是在你执行搜索查询时被搜索的。
如果一个filed没有设置indexed,那么他将不能被搜索,那有何用处?
Term Storage
当我们把搜索结果显示给用户时候,用户期望看到的是原始的文档,而不是经过analysis后的token。所以这就是Storage的目录,告诉solr把原始数据也保存下来。
有时候有些filed不需要被查询,但是需要在结果中显示,可以通过在shcema中设置filed的属性stored=true and indexed=false.
好的,那我们把所有filed都保存下来不是更好?
但是保存这些会增大solr索引文件的大小,索引越大,查询越慢( the larger the index, the slower the search)
运维网声明
1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网 享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com