gpt4 book ai didi

Solr:使用 'hypens'/破折号搜索返回零结果

转载 作者:行者123 更新时间:2023-12-04 03:07:20 27 4
gpt4 key购买 nike

我有各种文本字段,有时它们的值中有连字符/破折号,例如欧米加3。现在,当我搜索“Omega”甚至“Omega-”时,我得到了相关结果,但当我搜索“Omega-3”时,我得到的结果为零。

在“WordDelimiterFilterFactory”中设置 catenateAll=1 会解决这个问题吗?如果是,那么我应该在查询时间和索引时间都将其设置为 1 吗?或者还有什么我需要做的来解决这个问题吗?谢谢!

以下是定义文本字段类型的架构部分。

<fieldType name="text" class="solr.TextField" positionIncrementGap="100">
<analyzer type="index">
<tokenizer class="solr.WhitespaceTokenizerFactory" />

<filter class="solr.StopFilterFactory" ignoreCase="true" words="stopwords.txt" enablePositionIncrements="true" />
<filter class="solr.WordDelimiterFilterFactory" generateWordParts="1" generateNumberParts="1" catenateWords="1" catenateNumbers="1" catenateAll="0" splitOnCaseChange="1" />
<filter class="solr.LowerCaseFilterFactory" />
<filter class="solr.SnowballPorterFilterFactory" language="English" protected="protwords.txt" />
<filter class="solr.PorterStemFilterFactory"/>
</analyzer>
<analyzer type="query">
<tokenizer class="solr.WhitespaceTokenizerFactory" />

<filter class="solr.SynonymFilterFactory" synonyms="synonyms.txt" ignoreCase="true" expand="true" />
<filter class="solr.StopFilterFactory" ignoreCase="true" words="stopwords.txt" enablePositionIncrements="true" />
<filter class="solr.WordDelimiterFilterFactory" generateWordParts="1" generateNumberParts="1" catenateWords="0" catenateNumbers="0" catenateAll="0" splitOnCaseChange="1" />
<filter class="solr.LowerCaseFilterFactory" />
<filter class="solr.SnowballPorterFilterFactory" language="English" protected="protwords.txt" />
<filter class="solr.PorterStemFilterFactory"/>
</analyzer>
</fieldType>

最佳答案

破折号是 Solr/Lucene 中的特殊字符。你需要用\

来逃避它们

Lucene Escape Characters Documentation

关于Solr:使用 'hypens'/破折号搜索返回零结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8648781/

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