elasticsearch,tire,Indexing,Full Text Search,elasticsearch,Tire" /> elasticsearch,tire,Indexing,Full Text Search,elasticsearch,Tire" />

Indexing 我应该如何在ElasticSearch中索引我的数据以解决这种情况?

Indexing 我应该如何在ElasticSearch中索引我的数据以解决这种情况?,indexing,full-text-search,elasticsearch,tire,Indexing,Full Text Search,elasticsearch,Tire,我正在为《流放之路》的游戏建立一个搜索引擎。在这个游戏中,物品有插座 项目可以有0到6个插槽 可以链接某些套接字 插座有三种:红色、绿色、蓝色 例如,当3个套接字被链接时,我们认为它们都是相互链接的,而不仅仅是最近的一个。 具有5个链接插槽和1个链接插槽的项目示例 我的目标是允许用户使用ElasticSearch搜索具有特定套接字颜色和链接的项目 用户会这样描述套接字组合: RRRBB将是一个带有5个连接插座的项目,3个红色插座和2个蓝色插座。 GGG RB将有3个绿色插座连接,1个红色和1个蓝

我正在为《流放之路》的游戏建立一个搜索引擎。在这个游戏中,物品有插座

项目可以有0到6个插槽 可以链接某些套接字 插座有三种:红色、绿色、蓝色 例如,当3个套接字被链接时,我们认为它们都是相互链接的,而不仅仅是最近的一个。 具有5个链接插槽和1个链接插槽的项目示例

我的目标是允许用户使用ElasticSearch搜索具有特定套接字颜色和链接的项目

用户会这样描述套接字组合:

RRRBB将是一个带有5个连接插座的项目,3个红色插座和2个蓝色插座。 GGG RB将有3个绿色插座连接,1个红色和1个蓝色插座连接

还在跟踪吗

当我为一个项目编制索引时,我按字母顺序和组大小对链接的套接字进行排序组大小可能不是必需的:RB GGB将变成BGG RB

在进行搜索之前,我会以同样的方式对用户输入进行重新排序

因此,寻找一个精确的组合是非常容易和快速的。我甚至不需要分析数据,对吗

但我希望这些方案能够奏效:

ggg会发现ggg rb->这只需要一个空白分析器就很容易了

但我正在挣扎的是:

brr*rb将匹配bgrr rb->我现在做事情的方式:只要一个组有a*,我就在每个子组之间添加*,所以我会搜索:bg*rb。 它是有效的,但我认为它真的很低效,对吗?即使是一些小的优化,比如删除第一个和最后一个*如果第一个和最后一个字母是B或R

您对如何将数据分析器索引为字符串或术语或。。。让这成为可能和快速


结束。

如果有一个多值字段,术语是所有1-n个子组的组合,你不会有很长的路要走吗?