在使用Solr进行搜索的ColdFusion站点中,我正在尝试编辑schema.xml文件,以便关闭词干并仅返回精确的词匹配。这是为文本定义fieldType的方式:
<fieldType name="text" class="solr.TextField" positionIncrementGap="100">
<analyzer>
<tokenizer class="solr.StandardTokenizerFactory"/>
<filter class="solr.CommonGramsFilterFactory" words="stopwords.txt" ignoreCase="true"/>
<filter class="solr.LowerCaseFilterFactory"/>
<filter class="solr.RemoveDuplicatesTokenFilterFactory"/>
<filter class="solr.PorterStemFilterFactory"/>
</analyzer>
</fieldType>
我删除了分析器节点,重新启动了处理此特定搜索的核心并获得以下异常消息:&#34;元素HIGHLIGHTINGRESULT在作为异常的一部分引用的CFML结构中未定义。&#34;
在结果页面中,突出显示单词匹配。页面结果将在以下字段中呈现:
<field name="body" type="text" indexed="true" stored="true" multiValued="false" />
我将body字段中的类型更改为&#34; string&#34;并得到了同样的错误。当我从文本fieldType中取出solr.PorterStemFilterFactory过滤器时,只要该项具有完全匹配,结果页面就会显示为OK。当找到一个带有词干匹配的项目时(即搜索的单词是&#34; guard&#34;并且找到一个项目&#34; guarded&#34;),抛出异常。
我发现了一些不同的方法来将fieldType设置为仅返回完全匹配,但突出显示的这个问题让我难以理解。
更新:我发现不仅在文本中突出显示了单词,而且如果在HTML标签中找到它们,页面渲染器会尝试将其包装在标签中。因此,对于&#34; lepers&#34;这个词,带有&#34; lepers&#34;在标题得到这个,打破标签: