gpt4 book ai didi

solr - 如何在没有停用词的情况下对solr进行排序

转载 作者:行者123 更新时间:2023-12-05 01:14:22 24 4
gpt4 key购买 nike

我正在尝试通过忽略停用词的字段对 solr 查询进行排序,但似乎无法找到一种方法来做到这一点。例如,我希望结果按如下方式排序:

  • 查理
  • 一只狐狸
  • 直升机

这可能吗?现在字段类型定义如下:

    <fieldType name="alphaOnlySort" class="solr.TextField" sortMissingLast="true" omitNorms="true">
<analyzer>
<tokenizer class="solr.KeywordTokenizerFactory"/>
<filter class="solr.LowerCaseFilterFactory" />
<filter class="solr.TrimFilterFactory" />
<filter class="solr.StopFilterFactory" words="stopwords.txt" ignoreCase="true"/>
<charFilter class="solr.MappingCharFilterFactory" mapping="mapping-ISOLatin1Accent.txt"/>
<filter class="solr.PatternReplaceFilterFactory" pattern="([^a-z])" replacement="" replace="all" />
</analyzer>
</fieldType>

并且字段添加如下:

    <field name="title" type="alphaOnlySort" indexed="true" stored="false"/>

似乎其他人也必须这样做?还是不使用停用词进行排序是一种禁忌?

最佳答案

KeywordTokenizerFactory 不会将内容分成单独的部分,因此 StopFilterFactory 会尝试将标记(整个内容)与停用词列表匹配,但找不到匹配项。要从索引中获取停用词,您需要使用像 WhitespaceTokenizerFactory 这样的分词器,但是您不能对分词字段进行排序。所以我能想到的唯一方法是:

  1. 仍然使用 KeywordTokenizerFactory,
  2. 摆脱 StopFilterFactory
  3. 并使用 PatternReplaceFilterFactory(目前用于去除数字)的正则表达式从内容中删除停用词。

通常,您想要用于排序(而不是搜索)的唯一停用词是“A”、“AN”、“THE”。我不太擅长正则表达式,但我相信这对很多人来说都是微不足道的。

关于solr - 如何在没有停用词的情况下对solr进行排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3392787/

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