如何在同一子文档上使用多个条件查询和过滤 Solr 6.4 子文档?
How do I query and filter Solr 6.4 child documents with multiple criteria on the same child document?
假设我在 Solr 6.4.2 中有以下文档。
<doc>
<field name="id">1</field>
<field name="solr_record_type">1</field>
<field name="title">Fabulous Book</field>
<field name="author">Angelo Author</field>
<doc>
<field name="id">1-1</field>
<field name="solr_record_type">2</field>
<field name="contributor_name">Polly Math</field>
<field name="contributor_type">3</field>
</doc>
</doc>
<doc>
<field name="id">2</field>
<field name="solr_record_type">1</field>
<field name="title">Wonderful Book</field>
<field name="author">Andrew Author</field>
<doc>
<field name="id">2-1</field>
<field name="solr_record_type">2</field>
<field name="contributor_name">Polly Math</field>
<field name="contributor_type">4</field>
</doc>
<doc>
<field name="id">2-2</field>
<field name="solr_record_type">2</field>
<field name="contributor_name">Carlos Composer</field>
<field name="contributor_type">3</field>
</doc>
</doc>
我想要 return 包含子文档的文档,其中 contributor_name 是 Polly Math,contributor_type 是 3。 contributor_name 是一个文本字段,我也将其索引到一个语音字段中,但 contributor_type 只是一个整数。
以下查询参数return既记录又不按贡献者类型做任何限制:
q={!parent which="solr_record_type:1" v=$q_composer_name}
q_composer_name=_query_:"{!dismax qf=\"contributor_name^2.0 contributor_name_phonetic^2.0\" pf=\"contributor_name^2.0 contributor_name_phonetic^2.0\" tie=0.05}Polly"
fl=*,[child parentFilter="solr_record_type:1"]
如何更新此查询,以便 return id=1 的记录而不是 id=2 的记录?
公平地说,我没有看到您想要的 contributor_type
过滤器。
所以,我只会将它添加到您用来使 q_composer_name
如下所示的本地参数中:
q_composer_name=+_query_:"{!dismax qf=\"contributor_name^2.0 contributor_name_phonetic^2.0\" pf=\"contributor_name^2.0 contributor_name_phonetic^2.0\" tie=0.05}Polly" +contributor_type:3
我添加了缺失的部分 +contributor_type:3
以使该条款成为必须。此外,在 dismax 查询中也添加了一个 + ,使其真正成为 Polly AND type 3
假设我在 Solr 6.4.2 中有以下文档。
<doc>
<field name="id">1</field>
<field name="solr_record_type">1</field>
<field name="title">Fabulous Book</field>
<field name="author">Angelo Author</field>
<doc>
<field name="id">1-1</field>
<field name="solr_record_type">2</field>
<field name="contributor_name">Polly Math</field>
<field name="contributor_type">3</field>
</doc>
</doc>
<doc>
<field name="id">2</field>
<field name="solr_record_type">1</field>
<field name="title">Wonderful Book</field>
<field name="author">Andrew Author</field>
<doc>
<field name="id">2-1</field>
<field name="solr_record_type">2</field>
<field name="contributor_name">Polly Math</field>
<field name="contributor_type">4</field>
</doc>
<doc>
<field name="id">2-2</field>
<field name="solr_record_type">2</field>
<field name="contributor_name">Carlos Composer</field>
<field name="contributor_type">3</field>
</doc>
</doc>
我想要 return 包含子文档的文档,其中 contributor_name 是 Polly Math,contributor_type 是 3。 contributor_name 是一个文本字段,我也将其索引到一个语音字段中,但 contributor_type 只是一个整数。
以下查询参数return既记录又不按贡献者类型做任何限制:
q={!parent which="solr_record_type:1" v=$q_composer_name}
q_composer_name=_query_:"{!dismax qf=\"contributor_name^2.0 contributor_name_phonetic^2.0\" pf=\"contributor_name^2.0 contributor_name_phonetic^2.0\" tie=0.05}Polly"
fl=*,[child parentFilter="solr_record_type:1"]
如何更新此查询,以便 return id=1 的记录而不是 id=2 的记录?
公平地说,我没有看到您想要的 contributor_type
过滤器。
所以,我只会将它添加到您用来使 q_composer_name
如下所示的本地参数中:
q_composer_name=+_query_:"{!dismax qf=\"contributor_name^2.0 contributor_name_phonetic^2.0\" pf=\"contributor_name^2.0 contributor_name_phonetic^2.0\" tie=0.05}Polly" +contributor_type:3
我添加了缺失的部分 +contributor_type:3
以使该条款成为必须。此外,在 dismax 查询中也添加了一个 + ,使其真正成为 Polly AND type 3