【问题标题】:How to define multivalue for an array of fields in solr如何为solr中的字段数组定义多值
【发布时间】:2013-08-10 07:08:28
【问题描述】:

我有一组标签多次出现的 xml 文档。例如以下文档中的<Address> 标记。换句话说,父标签地址出现了 2 次。

我想搜索 Name=ABCDZipCode=33333 并希望 solr 返回类似于下面给出的“响应文档”的响应。是否可以在 solr4.0 中执行此操作而不将 Address 定义为一个多值单字段,其中所有子字段由分隔符分隔?

文档

<doc>
      <Name>ABCD</Name>
      <CompanyName>1234</CompanyName>
      <Address>
          <AddressLine1> 1725 ABCD Drive </AddressLine1>
          <AddressLine2> </Address Line2>
          <City>Miami</City>
          <State>FL</State>
          <Zipcode>33333</Zipcode>
          <AddressType>Home</AddressType>
      </Address>
      <Address>
          <AddressLine1> 16551 business blvd </AddressLine1>
          <AddressLine2> </Address Line2>
          <City>Miami</City>
          <State>FL</State>
          <Zipcode>33333</Zipcode>
          <AddressType>Business</AddressType>
      </Address>
</doc>
<doc>
      <Name>XYZWR</Name>
      <CompanyName>1234</CompanyName>
      <Address>
          <AddressLine1> 1725 ABCD Drive </AddressLine1>
          <AddressLine2> </Address Line2>
          <City>Miami</City>
          <State>FL</State>
          <Zipcode>33333</Zipcode>
          <AddressType>Home</AddressType>
      </Address>
      <Address>
          <AddressLine1> 16551 business blvd </AddressLine1>
          <AddressLine2> </Address Line2>
          <City>Phoenix</City>
          <State>AZ</State>
          <Zipcode>33333</Zipcode>
          <AddressType>Business</AddressType>
      </Address>
</doc>

回复文档

   <doc>
          <Name>ABCD</Name>
          <CompanyName>1234</CompanyName>
          <Address>
              <AddressLine1> 1725 ABCD Drive </AddressLine1>
              <AddressLine2> </Address Line2>
              <City>Miami</City>
              <State>FL</State>
              <Zipcode>33333</Zipcode>
              <AddressType>Home</AddressType>
          </Address>
          <Address>
              <AddressLine1> 16551 business blvd </AddressLine1>
              <AddressLine2> </Address Line2>
              <City>Miami</City>
              <State>FL</State>
              <Zipcode>33333</Zipcode>
              <AddressType>Business</AddressType>
          </Address>
    </doc>

问候

【问题讨论】:

    标签: solr nested-attributes


    【解决方案1】:

    我们必须存储去规范化。没有其他办法了。所以,我们存储像

    这样的字段
    home_addressline1
    home_zipcode
    etc.,
    

    在搜索方面,您可以拥有动态字段 - 2 种动态字段,然后拥有一个可以适当复制到这些动态字段中的复制字段

    address_*
    *_home (and/or) *_business etc.,
    

    当用户想要搜索邮政编码并且不关心地址的“类型”时,您使用 address_* ,而当用户只想搜索“家庭类型”时,您使用 *_home 并且请求开始涌入很快只搜索某种地址类型:)

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-07-21
      • 1970-01-01
      • 1970-01-01
      • 2017-02-22
      • 1970-01-01
      • 2018-03-04
      相关资源
      最近更新 更多