gpt4 book ai didi

Solr 不突出某些单词

转载 作者:行者123 更新时间:2023-12-04 12:19:24 25 4
gpt4 key购买 nike

我用 highlighting functionality 配置了 solr 4.10(也是 5.3) .它适用于大多数单词,但是我发现有些单词“ 不允许 ”允许突出显示,即 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="[\s\n,/\\]" />
<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="[\s\n,/\\]" />
<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="[\s\n,/\\]" />
<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="[\s\n,/\\]" />
<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="[\s\n,/\\]" />
<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="[\s\n,/\\]" />
<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:
我发现我有字 senior在我的 synonyms_abbr.txt文件,行 senior,lead .当我注释该行或替换单词的位置时, lead,senior ,出乎意料的词 senior开始突出。有任何想法吗 ?

更新 2:
来自 synonyms.txt 的话和 synonyms_other.txt正在正常突出显示,但来自 synonyms_abbr.txt 的话行为奇怪如下。例如,我有一行 lead,head,seniorsynonyms_abbr.txt然后
  • 查询http://localhost:8983/solr/select?q=seniorhttp://localhost:8983/solr/select?q=head不突出显示任何单词,
  • 查询http://localhost:8983/solr/select?q=lead不仅突出了这个词lead ,还有headsenior .
  • 最佳答案

    从您的 update2 可以清楚地看出,只有 lead,head,senior 中的第一个词实际上用于同义词匹配和突出显示。

    如果您查看 SolrWiki 上的文档 https://wiki.apache.org/solr/AnalyzersTokenizersTokenFilters提到了 expand=true有一定的作用

    同义词参数命名一个定义同义词的外部文件。
    如果 ignoreCase 为真,则在检查相等性之前匹配将小写。
    如果 expand 为真,则同义词将扩展为所有等效的同义词。如果为 false,则所有等效的同义词将减少到列表中的第一个 .

    该站点还提供了示例

    # 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 中的 Synonym 过滤器定义更改为使用 expand=true OR
    更改同义词文件定义过滤器的方式以使用显式映射。

    此外,由于分析器在索引时工作,您可能必须重新索引文档才能使其工作。

    关于Solr 不突出某些单词,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33236074/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com