词干查询和模糊搜索在Apache Solr中是否一起工作

时间:2019-03-13 11:00:56

标签: solr stemming fuzzy porter-stemmer

我正在使用波特过滤器工厂处理其中包含3到4个字的字段。

例如:“ ABC BLOSSOM公司”

我也希望在搜索ABC BLOSSOMING COMPANY时获取上述文档。

当我查询此:

  $candidat = new Candidat();
    $form = $this->createForm(CandidatType::class, $candidat);
    ;

$this->render("cvtheque/ajouter_candidat.html.twig",['form' => $form->createView()])

我得到了结果

这就是解析后的查询的样子

  

+名称:南部+名称:开花 + 名称:公司   (Stemmer工作正常)   

但是当我添加模糊语法并像这样查询时,

name:ABC AND name:BLOSSOMING AND name:COMPANY

搜索未提供任何文档作为结果,并且已解析的查询如下所示

  

+名称:abc〜1 +名称:正在开花〜1 +名称:公司〜2   

这清楚地表明没有发生阻止。 请查看并提供反馈。

1 个答案:

答案 0 :(得分:1)

TL; DR
由于您使用的不是MultiTermAwareComponent的PorterFilter,因此不会发生阻塞。

该做什么?
使用实现MultiTermAwareComponent接口的过滤器/规范化器之一。

说明
您和其他许多人一样,被Solr和Lucense Multiterm的行为所困扰。 Solr Wiki上有a good article about this topic。尽管本文已过时,但仍然适用。

  

对于大多数Solr用户而言,令人惊讶的一件事是通配符查询没有经过任何分析。实际上,这意味着通配符(以及前缀和范围)查询区分大小写,这与预期不符。从此SOLR-2438,SOLR-2918和SOLR-2921开始,此行为已更改。

     

您要问什么?本质上,任何术语都可以“指向”多个实际术语。例如,run *可以扩展为run,runner,runing,runt等。同样,范围查询实际上也是“多项”查询。在Solr 3.6之前,这些是完全未处理的,应用程序层通常必须应用所需的任何转换,例如降低输入框的大小。通过“正常”查询分析链运行这些类型的术语会导致各种有趣的行为,因此避免了这种情况。