在为solr4.10配置ik-analyzer中文分词器时我参考这篇文章, schema.xml中配置如下:

<fieldType name="text_ik" class="solr.TextField"
sortMissingLast="true" omitNorms="true">
    <analyzer type="index" isMaxWordLength="false" class="org.wltea.analyzer.lucene.IKAnalyzer"/>
    <analyzer type="query" isMaxWordLength="true" class="org.wltea.analyzer.lucene.IKAnalyzer"/>
</fieldType>

但是同样的配置在solr4.7上却无法出现了奇怪的现象。首先在solr4.7的Analyse面板中,中文是可以正确分词的。如下图:

但是使用solr4.7搜索时,却只能搜索出完全匹配的结构。查了网络上的很多资料,才发现问题出在fieldType的autogeneratephrasequeries属性上。

autoGeneratePhraseQueries=true|false (in schema version 1.4 and later this now defaults to false)

这个属性只能用于文本域。如果在查询文本分析时产生了多个词元,比如 Wi-Fi 分词为 Wi 和 Fi ,当 autoGeneratePhraseQueries 被设置为true时,这两个词元就构造了一个词组查询,即“ WiFi ”,所以索引中“ WiFi ”必须相邻才能被查询到;而autoGeneratePhraseQueries被设置成false时,他们只是两个不同的搜索词,它们没有位置上的关系。schema的版本小于1.4时,autoGeneratePhraseQueries默认为true,所以我们需要将autoGeneratePhraseQueries设置为false。

所以solr4.7下正确的配置应该是

<fieldType name="text_ik" class="solr.TextField" sortMissingLast="true"  omitNorms="true" autoGeneratePhraseQueries="false">
    <analyzer type="index" isMaxWordLength="false" class="org.wltea.analyzer.lucene.IKAnalyzer"/>
    <analyzer type="query" isMaxWordLength="true" class="org.wltea.analyzer.lucene.IKAnalyzer"/>
</fieldType>

全面理解React,实现自己的React

通过实现一个简单的React, 来理解React的原理 Continue reading

同构渲染的常见风险

Published on October 01, 2017

React16升级避坑指南

Published on September 10, 2017