当前位置: 首页 > 面试题库 >

分析器自动完成名称

孙永思
2023-03-14
问题内容

我希望能够自动完成姓名。

例如,如果我们有名字John Smith,我希望能够寻找JoSmJohn Sm获取文档回来。

另外,我不想jo sm匹配该文档。

我目前有这个分析仪:

return array(
    'settings' => array(
        'index' => array(
            'analysis' => array(
                'analyzer' => array(
                    'autocomplete' => array(
                        'tokenizer' => 'autocompleteEngram',
                        'filter' => array('lowercase', 'whitespace')
                    )
                ),

                'tokenizer' => array(
                    'autocompleteEngram' => array(
                        'type' => 'edgeNGram',
                        'min_gram' => 1,
                        'max_gram' => 50
                    )
                )
            )   
        )
    )
);

问题在于,首先我们将文本分割开,然后使用edgengrams进行标记化。

结果是: j jo joh john s sm smi smit smith

这意味着,如果我搜索john smithjohn sm,则不会返回任何内容。

因此,我需要生成看起来像这样的令牌: j jo joh john s sm smi smit smith john s john sm john smi john smit john smith

如何设置分析仪,以便生成这些额外的令牌?


问题答案:

我最终没有使用edgengrams。

我用standard令牌生成器standardlowercase过滤器创建了一个分析器。这实际上与standard分析器相同,但是没有任何停用词过滤器(我们毕竟是在搜索名称,可能会有一个叫The或的人An)。

然后我设定在上述分析仪作为index_analyzersimple作为search_analyzer。将此设置与match_phrase_prefix查询配合使用非常有效。

这是我使用的自定义分析器(称为自动完成功能,用PHP表示):

'autocomplete' => array(
                        'tokenizer' => 'standard',
                        'filter' => array('standard', 'lowercase')
                ),


 类似资料:
  • 问题内容: 如何使用Redis实现自动完成功能? 比如说我有一个数组。当我型我得到 我希望你明白这一点。我如何有效地使用redis命令来实现这一点(如果可能,但我认为是)。如果我能通过telnet尝试一些简单的命令来模仿这种行为,那就太好了。 谢谢 问题答案: 如果您要处理的是大型数据集,建议您考虑将其实现。我将一小部分Ruby做到了这一点: 例如: 在Wikipedia的Tries条目上阅读有关

  • 自动完成是现代网站中经常使用的一种机制,用于向用户提供他/她在文本框中键入的单词开头的建议列表。 然后,用户可以从列表中选择一个项目,该项目将显示在输入字段中。 此功能可防止用户输入整个单词或一组单词。 JQueryUI提供了一个自动完成窗口小部件 - 一个与下拉列表非常相似的控件,但过滤选项只显示与用户在控件中键入的内容相匹配的选项。 jQueryUI提供了autocomplete()方法,用于

  • md-autocomplete是一个Angular Directive,用作一个特殊的输入控件,带有内置下拉列表,显示与自定义查询的所有可能匹配。 一旦用户键入输入区域,该控件就充当实时建议框。 《md-autocomplete》可用于从本地或远程数据源提供搜索结果。 执行查询时md-autocomplete缓存结果。 第一次调用后,它使用缓存的结果来消除不必要的服务器请求或查找逻辑,并且可以禁用

  • 描述 (Description) 自动填充是Framework7的移动友好和触摸优化组件,可以是下拉列表或独立方式。 您可以使用JavaScript方法创建和初始化自动完成实例 - myApp.autocomplete(parameters) 其中parameters是用于初始化自动完成实例的必需对象。 自动填充参数 下表列出了Framework7中可用的自动填充参数 - S.No 参数和描述

  • 问题内容: 我正在尝试实现自动补全功能,但是找不到在Swift中可用的示例。下面,我打算转换Ray Wenderlich的自动完成教程 和2010年的示例代码。最后,代码进行了编译,但是没有显示包含可能完成的表格,而且我没有经验来了解为什么它未被隐藏shouldChangeCharactersInRange。 问题答案: 用下面的内容替换您的函数内容。希望对您有帮助。

  • 所以伙计们,我开始研究elasticsearch,并开始尝试在我的机器上构建一个带有edge-ngram标记器的自动完成,并在尝试遵循此类配置的留档时发现了一个问题。 我遵循了以下步骤: > 根据文档要求,我使用标准配置创建了索引: 我通过批量向索引中添加了一项: 我试图更新字段映射以引用我的自定义分析仪 问题:当尝试继续执行步骤3时,以下错误返回给我: