solr select带有2个字段

mqxuamgl  于 2021-10-10  发布在  Java
关注(0)|答案(1)|浏览(169)

我想执行一个组合搜索,其中zygosity和variant内容值与我的特定查询匹配。
考虑到我的方案的一部分:

"fields":[{
            "name":"id",
            "type":"int",
            "indexed":true,
            "stored":true},
          {
            "name":"variant",
            "type":"text_ws",
            "indexed":true,
            "stored":false},
          {
            "name":"zygosity",
            "type":"text_ws",
            "indexed":true,
            "stored":false}],

我发现以下选择失败的文档为零:
第一次尝试:使用(+)

curl urlPath/solr/collection/select?q=+variant:"1:28898383:A>T" +zygosity:"het"&wt=json&indent=true&debugQuery=true&rows=100000

第二次尝试:fq

curl urlPath/solr/collection/select?q=variant:"1:28898383:A>T"fq=zygosity:'het'&wt=json&indent=true&debugQuery=true&rows=100000

答复示例:

<response>
<lst name="responseHeader"><int name="status">0</int><int name="QTime">1</int><lst name="params"><str name="q">+zygosity:het +variant:(1\:22165566\:G&gt;A)</str></lst></lst><result name="response" numFound="0" start="0"></result>
</response>

还有很多其他的。。。
那么我做错了什么?
为了确保我只选择了合子,我找到了9个文档!

curl urlPath/solr/collection/select?q=zygosity:*&wt=json&indent=true&debugQuery=true&rows=100000

<response>
<lst name="responseHeader"><int name="status">0</int><int name="QTime">0</int><lst name="params"><str name="q">zygosity:het</str></lst></lst><result name="response" numFound="9" start="0">...</result>
</response>

但若我只选择了variant,那个么零文档将返回给我

curl urlPath/solr/collection/select?q=variant:"1:28898383:A>T"&wt=json&indent=true&debugQuery=true&rows=100000

<?xml version="1.0" encoding="UTF-8"?>
<response>
<lst name="responseHeader"><int name="status">0</int><int name="QTime">1</int><lst name="params"><str name="q">variant:(1\:28898383\:A&gt;T)</str></lst></lst><result name="response" numFound="0" start="0"></result>
</response>

有任何建议说明为什么select不考虑两个字段吗?或者为什么只搜索变量字段不返回任何内容?

vlju58qv

vlju58qv1#

我想问题在于参数的编码。我会尝试这样的方法:

curl http://localhost:8983/solr/your-core/select?q=variant%3Avariant-value%20AND%20zygosity%3Ahet

请注意,“%3a”是“:”so”的编码值 q 以人类可读的形式表示的价值应该是:

q=variant:variant-value AND zygosity:het

我怀疑你的 variant 值有冒号和大于符号作为值的一部分是问题的一部分,因为这些字符可能很难正确编码。

相关问题