我有4个CSV文件,正在同一核心中建立索引。
PRESCRIBER.csv
PRESCRIBER_ADDRESS.csv
PRESCRIBER_TELEPHONE.csv
TELEPHONE.csv
我想在SOLR中模仿以下SQL查询:
SELECT * FROM PRESCRIBER INNER JOIN PRESCRIBER_TELEPHONE ON
PRESCRIBER.PRESCRIBER_ID = PRESCRIBER_TELEPHONE.PRESCRIBER_ID
INNER JOIN TELEPHONE ON
PRESCRIBER_TELEPHONE.TELEPHONE_ID = TELEPHONE.TELEPHONE_ID
WHERE LAST_NAME LIKE '%A%' AND FIRST_NAME LIKE '%B%'
AND ISNULL(PRESCRIBER_TELEPHONE.PRIMARY_FLAG,'') = 'Y'
我写了下面的SOLR查询:
http://160.110.9.39:8983/solr/prscrbrDtls/select?q=*:*&fq=FIRST_NAME:*B*&fq=LAST_NAME:*A*&fq:{!join+from=PRESCRIBER_ID+to=PRESCRIBER_ID}TELEPHONE_ID{!join+from=TELEPHONE_ID+to=TELEPHONE_ID}PRIMARY_FLAG:Y&rows=5000
问题:
我只看到PRESCRIBER.csv中的字段。
{"PRESCRIBER_ID":[XX],
"PRESCRIBER_TYPE":["MD"],
"FIRST_NAME":["ELIZABETH"],
"LAST_NAME":["CHAVEZ"],
"MIDDLE_INITIAL":["O"],
"DEA_NUMBER":["XX"],
"ACTIVE_FLAG":["X"],
"LOCK_COL":[3],
"id":"d35e4c68-9cb2-477a-ad03-7ab25bc5490d",
"_version_":1608393436695625743}
我想在响应JSON中一起查看PRESCRIBER,PRESCRIBER_TELEPHONE和TELEPHONE的所有字段。
其他问题: 如何从SOLR响应中删除_str字段?
答案 0 :(得分:1)
您编写的查询正确无误,但是joins in Solr不允许您获取除查询的主集合中的内容以外的任何内容。这是Solr中联接的基本限制之一。
这与关系数据库中的联接概念不同,因为没有信息被真正联接。一个合适的SQL类比可以是“内部查询”。
如果您需要在查询的多个侧面上获取数据,则可以使用Streaming Expression,innerJoin,hashJoin,leftOuterJoin或其中之一来使用加入装饰。流表达式需要一个相当新的Solr版本。