1

我正在为游戏(流放之路)构建搜索引擎。在这个游戏中,物品有插槽。

  • 物品可以有 0 到 6 个插槽
  • 一些套接字可以链接
  • 有 3 种类型的插座(红色、绿色、蓝色)
  • 当 3 个套接字链接时(例如),我们认为它们都相互链接,而不仅仅是最近的一个。

具有 5 个链接插槽和 1 个单独的第六个插槽的项目示例。

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

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

“RRRBB”将是具有 5 个链接插槽、3 个红色和 2 个蓝色的项目。“GGG RB”将有 3 个绿色插座链接和 1 个红色和 1 个蓝色链接。

还在追?

当我索引一个项目时,我按字母顺序和组大小(可能不需要组大小)对链接的套接字进行排序:“RB GGB”将变为“BGG RB”。

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

所以,寻找一个精确的组合是超级容易和快速的(?)。我什至不需要分析数据,对吗?

但我希望这些场景能够奏效:

"ggg" 会找到 "ggg rb" -> 这很容易用空格分析器吗?

但我正在努力的是:

"brr* r b" 将匹配 "bgrr r b" -> 我现在做事的方式:一旦一个组有 *,我在每个子组之间添加 *,所以我会搜索:b g* r b . 它有效,但我认为它真的效率低下,对吧?(即使第一个和最后一个字母是 B 或 R 的情况下也有一些小的优化,比如删除第一个和最后一个 *)。

您是否知道如何索引数据(分析器,作为字符串或术语或......)以使其成为可能和快速?

结束。

4

0 回答 0