Solr 分析阶段

在两个时间需要用到分析。在索引时,当一个字段被创建时,分析这个字段得到的 token stream 将被加入索引库,并且定义出这个字段的 terms(包括位置、大小等等)。

在查询时,搜索词将被分析,并且去字段的索引中匹配相应的 terms。

在许多情况下,同样的分析会被应用在两个阶段,比如精准搜索,需要索引和搜索时采用同样的分析策略。在其他情况下,索引和搜索所采用的策略会有所不同。

如果字段类型只是简单定义了 ,这样相同的分析策略会被应用到索引和搜索阶段。如果打算搜索和索引采用不同的分析策略,字段类型定义中需要包含两个 ,如下所示:<fieldType name="nametext"> <analyzer *type="index"{*}> <tokenizer/> <filter/> <filter words="keepwords.txt"/> <filter synonyms="syns.txt"/> </analyzer> <analyzer *type="query"{*}> <tokenizer/> <filter/> </analyzer> </fieldType>在上面例子中,在索引时,文本内容将被转成小写,不存在keepwords.txt中的文本将被丢弃,剩下的将被替换syns.txt中的同义词。

在搜索时,会将搜索词转成小写,索引阶段的过滤和映射步骤搜索时没有定义,就不会发生。