2

我想索引以下字段:

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
...

似乎我必须制作一个自定义标记器才能做到这一点。将输入流分解为这些关键字排列的标记器。我不知道从哪里开始。我正在使用红宝石/轮胎。这是正确的想法吗?我该如何制作自己的标记器?

4

1 回答 1

1

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

于 2013-07-18T02:18:34.090 回答