如何将这些信息存储在 Solr 搜索引擎中?

How to store this information in the Solr search engine?

我构建了一个通信器,现在我想给它添加 Solr 搜索引擎。

用户创建对话,每个对话都包含一条或多条消息。消息存储为树中的节点。例如:

1. initial message
   1.1 reply
   1.2 another reply for initial message
      1.2.1 bla bla bla...
      1.2.2 Lorem ipsum dolorem...
   1.3 third reply for initial message

总是只有一条初始消息。

我想在 Solr 中存储所有消息的内容。我正在考虑以这种方式存储数据:

{
    "conversationId_s_lower": <conversation id here>,
    "messageId_s_lower": <message id here>,
    "content_txt_en": <message content here>
  }

但我还需要在会话属性中进行索引和搜索:

{
    conversationTitle_txt_en: "...",
    conversationAccessUsersId: [123, 45, ...],
    ....
}

所以问题是:我应该如何索引这些数据,我应该如何进行查询?

开始设计前要问的一些问题。从 solr 的角度来看,您可以通过提供搜索词来搜索文档。所以在你的情况下,你认为文件是什么。是对话还是个人消息。大多数情况下,文档类似于实体。所以我想在这里进行一次对话。所以它有一个ID。

接下来是每个对话都有多个消息。我可以看到此消息层次结构有多个级别。你想维护它吗?还是所有的消息都被认为在一个级别下。

然后是查询部分 - 当您搜索时,您是否希望消息或对话计数。当您如上所述设计实体时,无论如何都会决定这一点。

一旦你回答了这些问题,你就可以转向反规范化或嵌套实体(在你的情况下,消息嵌套在对话中)。有了上面的答案,剩下的过程可以在任何 solr 文章中找到以索引文档。如果您需要任何进一步的信息,请告诉我。快乐的设计和编码