分词器

文本字段的分词器配置在 schema.xml 中的 <analyzer> 元素下的:

<br /> &lt;fieldType name=&quot;text&quot; class=&quot;solr.TextField&quot;&gt;<br /> &lt;analyzer type=&quot;index&quot;&gt;<br /> &lt;tokenizer class=&quot;solr.StandardTokenizerFactory&quot; /&gt;<br /> &lt;filter class=&quot;solr.StandardFilterFactory&quot; /&gt;<br /> &lt;/analyzer&gt;<br /> &lt;/fieldType&gt;<br /> 

这个class属性指明一个工厂类, timberland 这个工厂类在需要的时候可以产生一个分词器的实例。 ugg france 分词器工厂类实现了 org.apache.solr.analysis.TokenizerFactory , timberland homme TokenizerFactory 的 create 方法接受一个 reader 然后返回一个 TokenStream。 Timberland Femme Pas Cher 当 solr 创建了分词器, Bottes UGG Pas Cher France 通过一个 reader 传递文本的字段内容给分词器。

可以通过设置 <tokenizer> 元素的属性给分词器传递参数。

高亮

Solr 为各种搜索请求都提供了高亮组件, PUMA en soldes 这些搜索请求包括:dismax、edismax、或者标准查询解析器。 ugg france
可以高亮字段, puma 必须索引并且存储。 puma 2018 basket
高亮有以下可配置参数:
hl
hl.fl
hl.snippets
hl.fragsize
hl.mergeContinuous
hl.requireFieldMatch
hl.maxAnalyzedChars
hl.alternateField
hl.maxAlternateFieldLength
hl.formatter
hl.simple.pre hl.simple.post
hl.fragmenter
hl.useFastVectorHighlighter
hl.phraseLimit
hl.boundaryScanner
hl.usePhraseHighlighter
hl.highlightMultiTerm
hl.regex.slop
hl.regex.pattern
hl.regex.maxAnalyzedChars
hl.q
God, ugg australia pas cher 这参数比旧版的多了很多, moncler 大部分都不认识,

ClassNotFoundException HttpRequestInterceptor

在 solr 3.6 中, puma chaussure 2018 客户端使用 solrj 时

HttpSolrServer server = new HttpSolrServer("http://localhost:8080/solr/");

时报一个错

Exception in thread "main" java.lang.NoClassDefFoundError: org/apache/http/HttpRequestInterceptor
该错误的原因是没有集成以下几个 jar
httpclient-4.1.3.jar httpclient-cache-4.1.3.jar httpcore-4.1.4.jar httpmime-4.1.3.jar

这几个 jar 在 solr 3.6 的发行包中并没有集成,

什么是过滤器

和切词器一样,过滤器也是消费输入,然后输出一串的 tokens,过滤器也是继承自 org.apache.lucene.analysis.TokenStream。 moncler en ligne 和切词器不一样的是,一个过滤器的输入是另一种TokenStream。 puma 通常情况下,过滤器的工作比切词器简单,过滤器拿着每个token,决定是继续流转下去或者替换或者抛弃。 chaussure timberland
过滤器消费一个 TokenStream 然后产生一个新的 TokenStream,过滤器可以一个接一个组成一个链。 timberland femme 链上的每个过滤器按顺序执行,因此注明过滤器的顺序显得很重要。 soldes puma chaussures 通常情况下,先执行普通过滤器,然后执行专业过滤器。
&lt;fieldType name=&quot;text&quot; class=&quot;solr.TextField&quot;&gt;<br /> &lt;analyzer&gt;<br /> &lt;tokenizer class=&quot;solr.StandardTokenizerFactory&quot;/&gt;<br /> &lt;filter class=&quot;solr.StandardFilterFactory&quot;/&gt;<br /> &lt;filter class=&quot;solr.LowerCaseFilterFactory&quot;/&gt;<br /> &lt;filter class=&quot;solr.EnglishPorterFilterFactory&quot;/&gt;<br /> &lt;/analyzer&gt;<br /> &lt;/fieldType&gt;

这个例子以solr标准分词器为开始,这个分词器会将字段的文本拆分成tokens,这些tokens再通过solr标准过滤器,标准过滤器移除字母中的点号,并且执行一些其他通用的操作。然后所有的token被转成小写,这样查询时可以匹配大小写不敏感搜索。 Baskets Puma
上面例子中最后一个过滤器是一个 stemmer 过滤器,它使用了Porter算法。

Solr 缓存配置(一)

缓存在 Solr 中充当了一个非常重要的角色,Solr 中主要有这三种缓存:

  • Filter cache(过滤器缓存),用于保存过滤器(fq 参数)和层面搜索的结果
  • Document cache(文档缓存),用于保存 lucene 文档存储的字段
  • Query result(查询缓存), botte ugg solde 用于保存查询的结果
还有第四种缓存, timberland chaussures lucene 内部的缓存, ugg pas cher 不过该缓存外部无法控制到。

通过这 3 种缓存, Timberland Pas Cher 可以对 solr 的搜索实例进行调优。调整这些缓存,需要根据索引库中文档的数量,每次查询结果的条数等。
在调整参数前, timberland 需要事先得到 solr 示例中的以下信息:
  • 索引中文档的数量
  • 每秒钟搜索的次数
  • 过滤器的数量
  • 一次查询返回最大的文档数量
  • 不同查询和不同排序的个数
这些数量可以在 solr admin 页面的日志模块找到。 timberland boots homme 假设以上的值分别为:

  • 索引中文档的数量:1000000
  • 每秒钟搜索的次数:100
  • 过滤器的数量:200
  • 一次查询返回最大的文档数量:100
  • 不同查询和不同排序的个数:500
然后可以开始修改 solrconfig.xml 中缓存的配置了, bottes ugg soldes 第一个是过滤器缓存:

<filterCache class="solr.FastLRUCache" size="200" initialSize="200" autowarmCount="100"/>

第二个是查询结果缓存:

<queryResultCache class="solr.FastLRUCache" size="500" initialSize="500" autowarmCount="250"/>

第三个是文档缓存:

<documentCache class="solr.FastLRUCache" size="11000" initialSize="11000" />

这几个配置是基于以上的几个假设的值进行调优的。

什么是分词器

分词器的工作是将一串的文本切成 tokens,这些 token 一般是文本的子集。 doudoune moncler pas cher 分析器的处理对象时一个字段,分词器则是面对一串文本,分词器读取一串文本,然后将其切割成一堆的 token 对象。 Timberland Femme
字符串中的空格或连接符会被删除。 ugg classic Basse 字符将被添加或者替换,如映射别名,或者缩写替换缩写为正常格式。 moncler soldes 分词器可能会产生出与原字段值不一致的token,或者长度与原始文本不一致。 timberland 这个在token元数据用于文本字段高亮搜索结果时需要注意。 magasin uggs pas cher en ligne
<br /> &lt;fieldType name=&quot;text&quot; class=&quot;solr.TextField&quot;&gt;<br /> &lt;analyzer&gt;<br /> &lt;tokenizer class=&quot;solr.StandardTokenizerFactory&quot;/&gt;<br /> &lt;/analyzer&gt;<br /> &lt;/fieldType&gt;<br /> 

<tokenizer>元素的类名称不是一个真实的分词器,但是它指向一个实现了org.apache.solr.analysis.TokenizerFactory接口的类。 ugg zalando 这个工厂在需要的时候会创建一个分词器的实例。

solr 伸缩性和分布式介绍

分布式解决的问题:
当搜索执行的时间太长,或者索引太大,此时要考虑使用 solr 的分布式了。solr 分布式中,将一个大的索引分成几个小的索引(shards,分片),放在不同的机器上。当执行搜索时,将查询划分成多个子查询,在不同机器的索引库中执行搜索, Bottes UGG Pas Cher France 然后将查询结果合并。 puma 2018 pas cher 这个拆分查询和合并结果的过程对用户是透明了。
索引复制解决的问题:
  • 当单机的查询性能不济时,可以考虑复制出多台索引来分别承担压力,如做一个全国性的搜索, puma chaussure 2018 可以将索引库复制30来个, ugg outlet france 每个省分一个,每个省请求过来时,分别在自己省所分配的索引库中进行搜索
  • 将索引的读写分离, soldes puma sneakers 也可以很好的提供性能。 ugg classic Basse 由一个负责写索引,然后同步到其他索引,其他索引只读,仅提供搜索。 ugg australia pas cher
  • 备份索引,

利用 Replication Handler 备份索引

solr 索引备份最简单的方式是通过 Replication Handler。 ugg classic Basse 在使用 Replication Handler 之前, magasin uggs pas cher 需要将 solrconfig.xml 中 SolrReplicationHandler 的注释去掉:

 <requestHandler name="/replication" class="solr.ReplicationHandler" > <lst name="master"> <str name="replicateAfter">commit</str> <str name="replicateAfter">startup</str> <str name="confFiles">schema.xml,stopwords.txt</str> </lst> <lst name="slave"> <str name="masterUrl">http://localhost:8983/solr/replication</str> <str name="pollInterval">00:00:60</str> </lst> </requestHandler>
然后启动 web 容器, moncler paris 启动完成后执行

http://localhost:81/apache-solr-3.5.0/replication?command=backup

该请求成功的话, chaussures puma pas cher 会得到:

<response> <lst name="responseHeader"> <int name="status">0</int> <int name="QTime">42</int> </lst> <str name="status">OK</str> </response>

此时在 solr/home 的 data 目录下, soldes puma chaussures 会发现类似 snapshot.20120626210126 的目录,

一个字段多组条件查询

lucene 和 solr 支持针对一个字段使用布尔操作符, Baskets Puma 使用括号来分成多个条件。 moncler homme soldes 如下所示:

title:(+return +”pink panther”)

该语句将在 title 字段中搜索, bottes ugg soldes 同时包含 return 单词和 “pink panther” 短语的文档。

多组条件查询

Lucene 和 solr 支持多个查询条件查询, doudoune moncler 这些条件使用括号进行分组, moncler pas cher 使用布尔表达式进行连接, moncler soldes 如下所示:

(jakarta OR apache) AND website

该表达式表示, ugg outlet 所查结果中必须包含 website, bottes ugg 然后 jakarta 和 apache 两个中必须包含一个。

Copyright © All Rights Reserved · Green Hope Theme by Sivan & schiy · Proudly powered by WordPress · 闽ICP备18020075号