我想执行一个组合搜索,其中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>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>T)</str></lst></lst><result name="response" numFound="0" start="0"></result>
</response>
有任何建议说明为什么select不考虑两个字段吗?或者为什么只搜索变量字段不返回任何内容?
1条答案
按热度按时间vlju58qv1#
我想问题在于参数的编码。我会尝试这样的方法:
请注意,“%3a”是“:”so”的编码值
q
以人类可读的形式表示的价值应该是:我怀疑你的
variant
值有冒号和大于符号作为值的一部分是问题的一部分,因为这些字符可能很难正确编码。