如何在Solr搜索引擎中存储此信息?

时间:2015-08-03 17:00:54

标签: solr

我构建了一个通信器,现在我想将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, ...],
    ....
}

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

1 个答案:

答案 0 :(得分:2)

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

接下来是每个会话都有多条消息。我可以看到此消息层次结构有多个级别。你想保持这个吗?或者是所有消息都被认为是在一个级别下。

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

回答完这些问题之后,您可以转到非规范化或嵌套实体(在您的情况下,消息嵌套在对流中)。通过对上述内容的回答,可以在索引文档的任何solr文章中找到该过程的其余部分。如果您需要任何进一步的信息,请告诉我。快乐的设计和编码