我想索引以下字段:

quick brown fox

这样一来,搜索到的所有3个单词都会以任意顺序出现,但是仅搜索其中几个单词(如“棕狐”)会丢失。

换句话说,我想创建一个索引/查询,因此以下是正确的:
# input for field
quick brown fox

# hits
brown fox quick
fox quick brown
quick brown fox
...

# misses
quick brown
fox
quick brown fox red
...

看来我必须制作一个自定义标记器才能做到这一点。 token 生成器将输入流爆炸成这些关键字排列。我不确定从哪里开始。我正在使用 ruby /轮胎。那是正确的主意吗?我该如何制作自己的 token 生成器?

最佳答案

我会按字母顺序对这些单词进行排序,并使用一些不会出现在单词中的分隔符将它们组合在一起,并将它们作为一个未分析的标记进行索引。因此,quick brown fox将被索引为brown-fox-quick。您在索引编制和搜索期间都需要执行此操作。理想情况下,这将由分析仪完成,但我不知道有任何分析仪会为您执行类似操作。因此,您需要编写自己的自定义分析器(作为Java插件)或在Elasticsearch之外的代码中实现此逻辑。

关于ruby - 如何在ElasticSearch中索引此字段?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/17698895/

10-12 14:29