【发布时间】:2019-07-27 11:06:27
【问题描述】:
从 Postgres 中索引数据的最佳方式是什么,该数据包含一个具有长嵌套 JSONB 数据的字段。
POSTGRES 字段(json_db_field):
{
...
"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>
我可以通过将它包含在查询字段中来查询该字段:
qf=json_db_field
查询速度很慢,因此我认为最好更改此设置,因为将来可能会导致问题。
- 我是否应该首先在 Postgres 中将 JSON 字段展平为一个新表,其中包含每个对象项的列?
- 有没有办法在 SOLR 中索引这个字段,我可以有效地查询?
【问题讨论】:
标签: postgresql search indexing solr