如何在SOLR中加入文档

时间:2018-08-11 07:49:05

标签: csv solr

我有4个CSV文件,正在同一核心中建立索引。

  • PRESCRIBER.csv

    • 字段:PRESCRIBER_ID,PRESCRIBER_TYPE,FIRST_NAME,LAST_NAME,MIDDLE_INITIAL,DEA_NUMBER,DEA_SUFFIX,UPIN_NUMBER,SPIN_NUMBER,ACTIVE_FLAG,RESPONSIBLE_PRESCRIBER_ID,FACILITY_ID,LOCK_COL
  • PRESCRIBER_ADDRESS.csv

    • 字段:PRESCRIBER_ID,ADDRESS_ID,LOCATION_TYPE,PRIMARY_FLAG,LOCK_COL,PRESCRIBER_LOCATION_CODE
  • PRESCRIBER_TELEPHONE.csv

    • 字段:PRESCRIBER_ID,TELEPHONE_ID,PRIMARY_FLAG,LOCK_COL
  • TELEPHONE.csv

    • 字段:TELEPHONE_ID,TELEPHONE_TYPE,AREA_CODE,TELEPHONE_NUMBER,EXTENSION,LOCK_COL

我想在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的所有字段。

  1. 有关如何做到这一点的任何指示?
  2. 我写的查询正确吗?

其他问题: 如何从SOLR响应中删除_str字段?

1 个答案:

答案 0 :(得分:1)

您编写的查询正确无误,但是joins in Solr不允许您获取除查询的主集合中的内容以外的任何内容。这是Solr中联接的基本限制之一。

  

这与关系数据库中的联接概念不同,因为没有信息被真正联接。一个合适的SQL类比可以是“内部查询”。

如果您需要在查询的多个侧面上获取数据,则可以使用Streaming ExpressioninnerJoinhashJoinleftOuterJoin或其中之一来使用加入装饰。流表达式需要一个相当新的Solr版本。