Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/solr/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
补偿solr中的攻击性词干_Solr_Stemming - Fatal编程技术网

补偿solr中的攻击性词干

补偿solr中的攻击性词干,solr,stemming,Solr,Stemming,在构建solr文本查询时,我试图在后端完成两件事:添加误报和删除误报 在词干分析的上下文中,补偿假阴性意味着将字符串“children”添加到正在查找单词“child”的查询中,因为不规则复数的词干与单数形式的词干不匹配 假阳性很难在英语中找到,但假设的例子是“娱乐”一词与“创造”词干相同。在这种情况下,我们仍然希望使用词干分析器,以便作为结果给出“休闲”,但我们仍然希望阻止“创建”的任何实例 我最初尝试的解决方案是创建两个文本字段,一个带词干分析器,另一个不带词干分析器。否则,这些字段将共享相

在构建solr文本查询时,我试图在后端完成两件事:添加误报和删除误报

在词干分析的上下文中,补偿假阴性意味着将字符串“children”添加到正在查找单词“child”的查询中,因为不规则复数的词干与单数形式的词干不匹配

假阳性很难在英语中找到,但假设的例子是“娱乐”一词与“创造”词干相同。在这种情况下,我们仍然希望使用词干分析器,以便作为结果给出“休闲”,但我们仍然希望阻止“创建”的任何实例

我最初尝试的解决方案是创建两个文本字段,一个带词干分析器,另一个不带词干分析器。否则,这些字段将共享相同的标记器、规范化器和其他属性。原因是如果我使用以下查询

text_en:(recreation -"create")
然后,如果“creation”和“create”都源于“create”,solr似乎将其解释为“返回所有具有“create”词干而没有“create”词干的文档”,这显然不会返回任何文档

所以我试着使用一个没有词干分析器的字段,和词干字段结合起来,就像这样

(text_en:recreation AND
text_en_norm:(-"create"))

其中,text_en_norm是未分段的字段。两个字段的原始文本相同。然而,这似乎并不像预期的那样有效。仍然返回单词“create”的实例。我的查询是否有问题,或者我是否误解了更基本的内容?

这是我的查询语法的问题。以下查询有效

((text_en:"recreation" ) AND !text_en_norm:("create"))

然而,这种方法引入了一个bug。文档可能同时包含假阳性和正确结果,但不会返回。e、 g.“大学为学生创建娱乐中心。”由于结果受阻,该结果不会被退回。这似乎很少见,但我已经在我的应用程序中看到过

您是否尝试过使用不同的词干筛选(也有一些是基于词典的),或者将误报标记为关键字(在不进行词干筛选的情况下)。我们曾经有过一些情况,我们不得不修改底层的Snowball词干分析器以获得我们想要的结果。我没有使用不同的词干过滤器,因为我正在寻找的解决方案必须应用于只有一个词干分析器选项的语言,而这一选项工作得相当糟糕。我举了一些英文例子来表达这个问题。你把假阳性标记为关键词是什么意思?我相信这就是我在这里要做的。@MatsLindh我只是重新阅读了这个问题(以及@commenting约定来通知您),并且不得不问,当您说“修改底层snowball词干分析器”时,您是指修改solr源代码还是仅仅更改配置中要求的词干分析器?嗯,不完全是Solr源代码,而是Lucene源代码中包含的snowball词干分析器(因此,是的,您必须获取源代码,进行修改并重新编译)。使用其他词干分析器会得到不同的结果,因此也值得探索。