gpt4 book ai didi

Solr 复合词分词器 - 结果被视为 OR 语句

转载 作者:行者123 更新时间:2023-12-02 11:21:10 26 4
gpt4 key购买 nike

荷兰语和德语确实有可以组合成新单词的单词;复合词。

例如,“accountmanager”被视为一个单词,由“account”和“manager”这两个单词组合而成。我们的用户将在文档和查询中使用“accountmanager”和“account manager”,并期望这两个查询得到相同的结果。

为了能够分解(分割)单词,solr 有一个我在架构中配置的字典过滤器:

<filter class="solr.DictionaryCompoundWordTokenFilterFactory" dictionary="../../compound-word-dictionary.txt" minWordSize="8" minSubwordSize="4" maxSubwordSize="15" onlyLongestMatch="true"/>

compound-word-dictionary.txt 文件包含用于分解复合词的单词列表。在此列表中,您会发现例如“帐户”和“经理”等词。

当使用查询“accountmanager”搜索时,在 Solr 调试器中分析时,分解结果正常:(术语文本):

  • 客户经理
  • 帐户
  • 经理

但是,此结果被视为 OR 语句,并查找其中至少包含一个术语的所有文档。我希望它的行为类似于 AND 语句(因此我只想要文档中同时包含术语“帐户”和“经理”的结果)。

我尝试将架构中的defaultOperator设置为“AND”,但是在使用edismax时,这会被忽略。因此,我将建议的 Min-should-Match 设置为 100% (mm=100%),但同样没有得到任何期望的结果。调整架构中字典过滤器的属性不会将行为更改为“AND”。

有人在使用字典复合词标记工厂时遇到过这种行为,并且知道让它表现得像 AND 语句一样的解决方案吗?

最佳答案

它按预期工作,DictionaryCompoundWordTokenFilterFactory 只是添加它找到的“内部单词”,在本例中是“account”和“manager”,但也可能只是其中一个,例如单词是“accountbanana”并且字典中没有“banana”,只有“account”才会被添加。

这可以帮助人们寻找“manager”并找到包含“accountmanager”的文档。

为了获得您想要的行为(我知道您正在查询端应用此行为),您可以使用使 accountmanager=“account manager” 的字典

关于Solr 复合词分词器 - 结果被视为 OR 语句,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11080287/

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