问题标签 [elasticsearch-phonetic]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
1034 浏览

elasticsearch - MapperParsingException [Analyzer [dbl_metaphone] not found for field [phonetic]]

I've an index on an Elasticsearch cluster, and I want to support phonetic matching.

This is my request:

I received this error response:

Anyone has any idea about why the dbl_metaphone analyzer couldn't be recognized for phonetic fields?

My elasticsearch's version is elasticsearch-1.7.2

Update 1

I already have the analyzer as the following

Update 2

Querying this request

I get the following response:

0 投票
1 回答
483 浏览

elasticsearch - 基于匹配token比率的Elasticsearch评分

我正在使用 Elasticsearch(v 1.7.3,带有 Java 传输客户端)来搜索人名数据库。我正在利用一堆可用的语音算法(DoubleMetaphone、RefinedSoundex 等)来索引我的姓名字段并存储它们。但是,我需要的评分算法是计算输入标记与索引中的标记的接近百分比。

例如:

以下文档在使用语音算法进行索引时:

扩展为(使用分析 api 获取的输出):

现在在搜索期间,当我查询:

我想做的是根据索引中匹配标记的数量对结果进行评分。

IE:

虽然这在概念上可以工作,但我想知道是否有更好的方法来实现同样的目标。

此外,我倾向于在索引期间推动大量复杂性和逻辑(通过将总标记数存储在字段中),因此我的搜索逻辑会更简单。如果这是一种合理的方法,那么我想知道在索引过程中使用分析 api 是否有任何技术含义,尤其是在对数百万个名称使用批量索引时。我猜会为每个原始令牌和每个扩展令牌调用分析 API(这可能是巨大的!)。

如果这根本不是一个合理的方法,那么请有人指点或分享一些经验吗?

我也在考虑的另一个选项是在查询期间调用分析 api,并使用“解释”选项将查询发送到 elasticsearch,然后在解释部分进行字符串匹配以计算出匹配的令牌数。

0 投票
0 回答
190 浏览

elasticsearch - Elasticsearch 中的自定义语音分析

在我们的服务中,我们正在尝试将“nysii”语音算法的自定义移植到 Elasticsearch。

我们的算法执行这个名称转换:

给定一个“姓氏”和“名字”列表,例如“[Smith]”和“[John]”,采用第一个姓氏的“nysiis”语音编码器,并将其连接到第一个名字的小写首字母.

因此:

所以“John Smith”的结果将是“SNATHj”

我知道 ES 支持 nyyis 令牌过滤器https://www.elastic.co/guide/en/elasticsearch/plugins/current/analysis-phonetic-token-filter.html

但我想知道实现自动执行上述转换的自定义分析器的最佳方法是什么。


注意:我想,如果需要,我们已经可以为 ES 提供一个简单的结构:

0 投票
0 回答
978 浏览

php - 弹性搜索语音分析插件不适用于索引

我已经成功地安装了语音分析插件(2.2.0 版)——使用命令“sudo bin/plugin install analysis-phonetic”——到我构建的弹性搜索(2.3.4 版)中,之后我重新启动了弹性搜索服务器上的服务。但是,当我尝试构建索引时,出现以下错误:

它在我的本地机器上工作得很好,但在我的实时服务器上却不行,我不知道为什么它不能工作。我会很感激我能回到我的托管公司让他们调查的任何事情,因为我想这可能是一个服务器配置问题。

以下是最近几次重启的日志:

ps-edf | grep 弹性输出:

0 投票
0 回答
295 浏览

elasticsearch - Elasticsearch 关键字标记器不适用于语音分析器

我想添加一个 custom phonetic analyzer,也不想分析我给定的字符串。假设,我有两个字符串,

卡姆鲁伊斯兰

卡姆拉尔伊斯兰教

我不想使用查询字符串获得任何结果,KAMRUL但希望两者都作为查询字符串的结果KAMRUL ISLAM

为此,我采用了一个带有keyword分词器的自定义语音分析器。

索引设置:

类型映射:

我已插入数据:

我的查询字符串:

不幸的是,我得到了两个字符串。我正在使用 ES-1.7.1。有没有办法解决这个问题?

另外,虽然我跑了

我得到了结果:

并且在运行时:

我有:

0 投票
1 回答
609 浏览

elasticsearch - Dotnet 中 NEST 的弹性搜索语音问题

我是弹性搜索的新手,我想将它用于语音搜索,所以我使用 nougat 包在 dotnet 中添加了插件 NEST,并尝试使用语音创建索引,但出现以下错误。

ServerError = {ServerError:400Type:非法参数异常原因:“[my_metaphone]的未知过滤器类型[语音]”}

任何人都可以帮助我在 dotnet 中使用语音配置创建索引吗?提前致谢

编辑 :

我可以使用以下 json 请求创建索引。

使用 C# linq 场景不起作用,任何人都可以指导吗?

0 投票
1 回答
1400 浏览

python-3.x - elasticsearch 6.5 上的语音和模糊搜索

我已经将一些 csv 文件索引到 Elasticsearch 中,现在我正在尝试对某些列(基本上是两个)进行一些搜索。我想做: - 精确搜索 - 语音搜索 - 模糊搜索 - 同时进行语音和模糊搜索 - 如果可能的话,一次全部完成

请在下面找到我的 ElasticSearch 6.5.1 和 Python 3.7 代码

当我尝试我的代码时,出现以下错误

任何人都可以帮助我吗?

谢谢你

0 投票
1 回答
114 浏览

elasticsearch - 为什么拼音搜索比普通匹配查询慢得多

摘要:我试图理解为什么两个在复杂性上看起来非常相似的查询在执行速度上却大不相同。

我正在使用 Elastic Search 6.4,并且我有一个我想在其上使用语音查询的名称字段。

例如,我分析了搜索词“Mario”的语音查询,发现背景中的 Lucene 正在将其作为 SynonymQuery 执行:

对一个拥有约 1500 万条记录的索引执行此操作大约需要 200 毫秒。

由于它似乎将我的单个搜索词转换为 5 个同义词,我想“好吧,如果我搜索相同的 5 个不带语音的词怎么办?它会同样慢吗?” 或者换句话说“不是语音部分使它变慢,而是它必须搜索几个同义词的事实?”

但事实证明,如果我在没有拼音的字段中查询“mario mYrio mari mori morio”,它将产生一个 BooleanQuery(每个同义词作为子项查询一个术语):

只需要 1/10 的时间。请注意:我知道并理解这两个查询给出不同的结果。我不想用第二个查询来模拟语音搜索。我只是想看看它是否也会很慢,因为它似乎是一个类似复杂性的查询。

对于像我这样最近才开始使用 Elastic Search 的人来说,这两个查询在复杂性上看起来非常相似(使用 OR 运算符搜索 5 个术语),我不明白为什么一个比另一个慢得多。

任何见解将不胜感激!

提前致谢!

问候马里奥

PS:我意识到如果我包括我在这个例子中使用的两个查询可能会有所帮助:

第一个查询(语音):

第二个查询(非语音):

0 投票
1 回答
1597 浏览

python - Elasticsearch 使用搜索返回语音标记

由于语音转换,我使用弹性搜索中的语音分析插件进行一些字符串匹配。

我的问题是,如何在查询结果中通过弹性搜索处理语音转换?.

首先,我创建一个带有metaphone转换的索引:

然后,我添加一些数据:

最后,我查询一个名字:

搜索返回:

在搜索返回我想获得弹性搜索中名称的拼音转换(也来自查询名称,但不太重要)。

我知道,我可以使用explainAPI,但我想避免第二次请求,而且explain对于我想要实现的目标,API 似乎有点“矫枉过正”。

谢谢 !

0 投票
1 回答
203 浏览

amazon-web-services - 带语音搜索的弹性搜索

我试图让 Elastic Search 在城市列表中进行语音搜索。我的目标是即使用户使用不正确的拼写也能找到匹配的结果。

我已经完成了以下步骤:

  1. 删除域

  2. 创建新域

  3. 填写一些样本数据

  4. 在城市中搜索 - 在这里我得到一个结果

我尝试使用Mayerhofen进行查询,并期望得到与使用Mayrhofen相同的结果。与IschglIchglSaalbachSalbach相同的问题。

我的错误在哪里?有什么东西在发短信吗?