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字, seniorsenior,lead 。 当我评论这条线或者替换词的地方时, lead,senior ,令人惊讶的senior词开始突出显示。 有任何想法吗 ?


更新2:来自synonyms.txtsynonyms_other.txt的单词通常会突出显示,但来自synonyms_abbr.txt _abbr.txt的单词的行为如下所示。 例如,我拥有这些lead,head,senior然后是synonyms_abbr.txt

  • 查询http://localhost:8983/solr/select?q=seniorhttp://localhost:8983/solr/select?q=head不会突出显示任何单词,
  • 查询http://localhost:8983/solr/select?q=lead不仅http://localhost:8983/solr/select?q=lead突出显示lead ,还会显示headsenior

  • 从你的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

    上一篇: Solr does not highlight some words

    下一篇: Windows Service not starting on Windows 10 upgrade