Solr不会突出显示某些词语
我配置了高亮功能的solr 4.10(也是5.3)。 它工作正常,与大多数的话,但是我发现了一些字,其中“ 不 ”允许highlightings,就是Solr的返回所需的文档,但不突出一些。
什么会导致这种影响?
solrconfig.xml中
<requestHandler name="/select" class="solr.SearchHandler">
<lst name="defaults">
<str name="wt">json</str>
<str name="indent">true</str>
<str name="defType">edismax</str>
<str name="bf">product(concount)</str>
<str name="df">text bio text_syn text_syn_other</str>
<str name="qf">
text^25 bio^16 text_syn^8 text_syn_other^3
</str>
<str name="hl">on</str>
<str name="hl.fl">text bio text_syn text_syn_other</str>
<str name="hl.preserveMulti">true</str>
<str name="hl.encoder">html</str>
<str name="f.text.hl.fragsize">100</str>
<str name="hl.snippets">20</str>
<arr name="components">
<str>highlight</str>
</arr>
</lst>
schema.xml中
<fieldType name="text_en" class="solr.TextField" positionIncrementGap="100">
<analyzer type="index">
<tokenizer class="solr.PatternTokenizerFactory" pattern="[sn,/]" />
<filter class="solr.LowerCaseFilterFactory"/>
<filter class="solr.EnglishPossessiveFilterFactory"/>
<filter class="solr.KeywordMarkerFilterFactory" protected="protwords.txt"/>
<filter class="solr.PorterStemFilterFactory"/>
<filter class="solr.SynonymFilterFactory" synonyms="synonyms_abbr.txt" ignoreCase="true" expand="false"/>
</analyzer>
<analyzer type="query">
<tokenizer class="solr.PatternTokenizerFactory" pattern="[sn,/]" />
<filter class="solr.LowerCaseFilterFactory"/>
<filter class="solr.EnglishPossessiveFilterFactory"/>
<filter class="solr.KeywordMarkerFilterFactory" protected="protwords.txt"/>
<filter class="solr.PorterStemFilterFactory"/>
</analyzer>
</fieldType>
<fieldType name="text_en_syn" class="solr.TextField" positionIncrementGap="100">
<analyzer type="index">
<tokenizer class="solr.PatternTokenizerFactory" pattern="[sn,/]" />
<filter class="solr.LowerCaseFilterFactory"/>
<filter class="solr.EnglishPossessiveFilterFactory"/>
<filter class="solr.KeywordMarkerFilterFactory" protected="protwords.txt"/>
<filter class="solr.PorterStemFilterFactory"/>
<filter class="solr.SynonymFilterFactory" synonyms="synonyms.txt" ignoreCase="true" expand="false"/>
</analyzer>
<analyzer type="query">
<tokenizer class="solr.PatternTokenizerFactory" pattern="[sn,/]" />
<filter class="solr.LowerCaseFilterFactory"/>
<filter class="solr.EnglishPossessiveFilterFactory"/>
<filter class="solr.KeywordMarkerFilterFactory" protected="protwords.txt"/>
<filter class="solr.PorterStemFilterFactory"/>
</analyzer>
</fieldType>
<fieldType name="text_en_syn_other" class="solr.TextField" positionIncrementGap="100">
<analyzer type="index">
<tokenizer class="solr.PatternTokenizerFactory" pattern="[sn,/]" />
<filter class="solr.LowerCaseFilterFactory"/>
<filter class="solr.EnglishPossessiveFilterFactory"/>
<filter class="solr.KeywordMarkerFilterFactory" protected="protwords.txt"/>
<filter class="solr.PorterStemFilterFactory"/>
<filter class="solr.SynonymFilterFactory" synonyms="synonyms_other.txt" ignoreCase="true" expand="false"/>
</analyzer>
<analyzer type="query">
<tokenizer class="solr.PatternTokenizerFactory" pattern="[sn,/]" />
<filter class="solr.LowerCaseFilterFactory"/>
<filter class="solr.EnglishPossessiveFilterFactory"/>
<filter class="solr.KeywordMarkerFilterFactory" protected="protwords.txt"/>
<filter class="solr.PorterStemFilterFactory"/>
</analyzer>
</fieldType>
<field name="text" type="text_en" indexed="true" stored="true" multiValued="false" />
<field name="text_syn" type="text_en_syn" indexed="true" stored="false" multiValued="true" />
<field name="text_syn_other" type="text_en_syn_other" indexed="true" stored="false" multiValued="true" />
<field name="text_exact" type="string" indexed="true" stored="false" multiValued="false" />
<field name="bio" type="text_en" indexed="true" stored="true" multiValued="false" />
<field name="bio_exact" type="string" indexed="true" stored="false" multiValued="false" />
<field name="concount" type="long" indexed="true" stored="true" multiValued="false" />
<field name="concount_exact" type="long" indexed="true" stored="false" multiValued="false" />
<copyField source="text" dest="text_syn"/>
<copyField source="bio" dest="text_syn"/>
<copyField source="text" dest="text_syn_other"/>
<copyField source="bio" dest="text_syn_other"/>
对于查询http://localhost:8983/solr/select?q=senior
我得到了包含senior
字的文档,但突出显示了solr响应的该字未突出显示的部分。
更新1:我发现,我的synonyms_abbr.txt
文件中的senior,lead
字, senior
行senior,lead
。 当我评论这条线或者替换词的地方时, lead,senior
,令人惊讶的senior
词开始突出显示。 有任何想法吗 ?
更新2:来自synonyms.txt
和synonyms_other.txt
的单词通常会突出显示,但来自synonyms_abbr.txt
_abbr.txt的单词的行为如下所示。 例如,我拥有这些lead,head,senior
然后是synonyms_abbr.txt
http://localhost:8983/solr/select?q=senior
和http://localhost:8983/solr/select?q=head
不会突出显示任何单词, http://localhost:8983/solr/select?q=lead
不仅http://localhost:8983/solr/select?q=lead
突出显示lead
,还会显示head
和senior
。 从你的update2中可以明显看出,只有lead,head,senior
的第一个单词实际上用于同义词匹配和突出显示。
如果你看看SolrWiki https://wiki.apache.org/solr/AnalyzersTokenizersTokenFilters上的Docs,有一个提到expand=true
有一定效果
同义词参数命名定义同义词的外部文件。 如果ignoreCase为true,则在检查相等之前匹配将小写。 如果展开为真,则同义词将扩展为所有等同的同义词。 如果它是假的,所有等价的同义词将被缩减到列表中的第一个 。
该网站还介绍并举例说明
# If expand==true, "ipod, i-pod, i pod" is equivalent to the explicit mapping:
ipod, i-pod, i pod => ipod, i-pod, i pod
# If expand==false, "ipod, i-pod, i pod" is equivalent to the explicit mapping:
ipod, i-pod, i pod => ipod
这似乎与你观察到的行为一致。 这意味着您应该更改schema.xml中的同义词过滤器定义以使用expand = true或更改同义词文件定义过滤器以使用显式映射的方式。
此外,由于分析仪在索引编制时工作,您可能需要重新编制文档才能使其工作。
有些字段没有存储,因此无法返回。 由于它们被编入索引,因此可以搜索。 将您的模式更改为您想要突出显示的所有字段的stored =“true”。
<field name="text_syn" type="text_en_syn" indexed="true" stored="true" multiValued="true" />
<field name="text_syn_other" type="text_en_syn_other" indexed="true" stored="true" multiValued="true" />
通过查看你的配置,我认为突出显示在生物和文本字段上的作品?
你可以尝试添加高级,领导和领导,高级的文件synony_abbr.txt,然后尝试运行荧光笔
链接地址: http://www.djcxy.com/p/88355.html