【问题标题】:Apache Solr: Faceted Search on multivalued fieldsApache Solr:多值字段的分面搜索
【发布时间】:2012-03-28 10:31:40
【问题描述】:

我目前正在开发一个基于 solr 的搜索应用程序。

我有两个多值字段,例如: 从数据库中读取数据。

<int name="id">1</int>
<arr name="type">
<str>Marke</str>
<str>Modell</str>
<str>Fahrzeugtyp</str>
<str>engine</str>
</arr>
<arr name="value">
<str>Volkswagen</str>
<str>Golf</str>
<str>Golf TDI</str>
<str>V-Engine</str>

在我当前的 solr 配置中,这两个多值字段之间没有关系。所以我可以说“Marke = Volkswagen”。

除此之外,大众汽车和高尔夫之间必须有关系。所以我必须从两个多值字段和多值字段本身的值中构建一个分类法。

我尝试构建一个 typeAhead。在我当前的配置中,当我搜索 Volkswagen 时 - 可能的建议包含 audi 和 engine2,它们不涉及 Volkswagen 模型。 solr 网址:

http://xyz:8983/solr/suggest?&wt=json&facet=true&q=*&facet.field=value&facet.prefix=大众

我认为Solr Faceting on Multiple Concatenated Fields 与它有关,但我无法根据我的问题对其进行调整。

感谢回复


也许我可以使用 TemplateTransformer 来组合值和类型?


使用 TemplateTransformer 我得到一个结果:Marke |大众汽车

在我的 data-import.xml (DIH) 中

<entity> name="tablename" transformer="TemplateTransformer">
<field column="test"  template="${tablename.TYPE} | tablename.VALUE}"/>
...
</entity>

【问题讨论】:

  • 对格式进行了一些更改并更正了两个可能导致人们无法理解您的问题的语法问题。
  • 真的不明白你的问题....请详细一点
  • 我认为您的意思与stackoverflow.com/questions/23336335/… 相同...您找到解决方案了吗?如果有,请与我们分享
  • 如果您找到了解决方案,请分享一下。

标签: map solr faceted-search multivalue


【解决方案1】:

我已经很久没有解决这个问题了。尝试在您的数据输入处理程序中使用此脚本。注意 - 此脚本基于 solr 3.6。

 <script>
       <![CDATA[ function f1(row) 
         {
          var eldName = row.get('TYPE');
          row.put(eldName, row.get('VALUE'));
          return row;
         }
       ]]>
 </script>

 <entity name="e" transformer="script:f1" query="select TYPE, VALUE from X"></entity>

【讨论】:

  • 添加了动态字段并使用了转换器。太棒了!
猜你喜欢
  • 1970-01-01
  • 2013-06-21
  • 2017-06-10
  • 1970-01-01
  • 2012-10-21
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-12-19
相关资源
最近更新 更多