Postgresql 如何在SOLR中高效地索引和查询JSON字段数据?

Postgresql 如何在SOLR中高效地索引和查询JSON字段数据?,postgresql,search,indexing,solr,Postgresql,Search,Indexing,Solr,从包含长嵌套JSONB数据的字段的Postgres索引数据的最佳方法是什么 POSTGRES字段(json\u db\u字段): { ... "field_name": "field_value", "columns": [ { "nested_key": "nested_value_1", ... }, { "nested_key": "nested_value_1",

从包含长嵌套JSONB数据的字段的Postgres索引数据的最佳方法是什么

POSTGRES字段(json\u db\u字段):

{
  ...
  "field_name": "field_value",
  "columns": [
      {
          "nested_key": "nested_value_1",
          ...
      },
      {
          "nested_key": "nested_value_1",
          ...
      },
    ],
    ...
}
截至目前,我正在为字段编制索引,如下所示:

<field name="json_db_field" type="my_text_general" indexed="true" stored="true" required="false" multiValued="false" default="{}"/>

<fieldType name="my_text_general" class="solr.TextField" positionIncrementGap="100" multiValued="false">
    <analyzer type="index">
        <tokenizer class="solr.StandardTokenizerFactory"/>
        <filter class="solr.LowerCaseFilterFactory"/>
        <filter class="solr.EnglishMinimalStemFilterFactory"/>
        <filter class="solr.PhoneticFilterFactory" encoder="DoubleMetaphone"/>
    </analyzer>
    <analyzer type="query">
        <tokenizer class="solr.StandardTokenizerFactory"/>
        <filter class="solr.StopFilterFactory" ignoreCase="true" words="stopwords.txt" />
        <filter class="solr.SynonymFilterFactory" synonyms="synonyms.txt" ignoreCase="true" expand="true"/>
        <filter class="solr.EnglishMinimalStemFilterFactory"/>
        <filter class="solr.LowerCaseFilterFactory"/>
        <filter class="solr.PhoneticFilterFactory" encoder="DoubleMetaphone"/>
    </analyzer>
</fieldType>
这是相当缓慢的查询,因此我认为最好改变这个设置,因为在未来这可能会导致问题

  • 我是否应该首先在Postgres中将JSON字段展平到一个新表中,每个对象项都有列
  • 有没有一种方法可以在SOLR中索引这个字段,以便我高效地查询

  • 有不同的方法将JSON数据引入Solr,尽管在我看来,Solr可以更理想地用XML(使用DIH)填充,而不是JSON内容

    但是如果存储JSON,就不应该将其存储为简单的文本字段。 顺便说一句:发布你的
    my_text\u general
    字段定义会很有帮助

    我是否应该首先在Postgres中将JSON字段展平到一个新表中,每个对象项都有列

    我不会那么做的。在平面结构中迁移面向对象的结构是可行的,但在这种情况下,您会发现不同的问题

    有没有一种方法可以在SOLR中索引这个字段,以便我高效地查询

    如何通过使用类似于“嵌套文档”的东西将JSON indiex作为Solr,包括JSON结构的一部分,有不同的方法,也有不同的问题

    看看这个:

    //更新 看看你的字段定义,我不会使用那么多过滤器。但这取决于你的需要。大多数情况下,您喜欢精确地搜索一个术语,如
    。可能您不喜欢同时查找
    。为此,您应该只使用最小的过滤器,如
    lowerCase
    solr.StandardTokenizerFactory


    点击此处查看可能的情况:

    我已经更新了帖子以包含字段定义。
     qf=json_db_field