【发布时间】:2016-04-22 16:19:37
【问题描述】:
前一周我发布了一个关于从 Drupal 的 solr 搜索中删除标点符号的问题。那是使用 Solr 4。但是,从那时起,我正在做的开发已经从 solr 4 更改为 solr 5,现在我遇到了同样的问题,但 Can't remove punctuation in Solr 的修复不再有效。这会导致在按标题排序时出现问题,因为很多内容标题都带有引号。
<field name="label" type="text" indexed="true" stored="true" termVectors="true" omitNorms="true"/>
<fieldType name="text" class="solr.TextField" positionIncrementGap="100">
<analyzer>
<charFilter class="solr.MappingCharFilterFactory" mapping="mapping-ISOLatin1Accent.txt"/>
<tokenizer class="solr.WhitespaceTokenizerFactory"/>
<filter class="solr.StopFilterFactory"
ignoreCase="true"
words="stopwords.txt"
/>
<filter class="solr.WordDelimiterFilterFactory"
protected="protwords.txt"
generateWordParts="1"
generateNumberParts="1"
catenateWords="1"
catenateNumbers="1"
catenateAll="0"
splitOnCaseChange="0"
preserveOriginal="1"/>
<filter class="solr.LengthFilterFactory" min="2" max="100" />
<filter class="solr.LowerCaseFilterFactory"/>
<filter class="solr.SnowballPorterFilterFactory" language="English" protected="protwords.txt"/>
<filter class="solr.RemoveDuplicatesTokenFilterFactory"/>
</analyzer>
</fieldType>
我尝试添加以下规则,但撇号和引号会顽固地留在那里,并且在按标题排序时会干扰,将开头带引号的任何内容放在列表的最前面。
<charFilter class="solr.HTMLStripCharFilterFactory" />
<filter class="solr.ApostropheFilterFactory"/>
<filter class="solr.PatternReplaceFilterFactory"
pattern="^\p{Punct}*(.*?)\p{Punct}*$"
replacement="$1"/>
【问题讨论】:
-
您是否尝试过相同的字段类型...?或者尝试删除 char 过滤器...
-
我刚刚尝试删除 char 过滤器,但没有成功。你能解释一下你对相同字段类型的含义吗?