1

我目前正在开发基于 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 url:

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

我认为Solr Faceting on Multiple Concatenated Fields与它有关,但我可以' t根据我的问题调整它。

谢谢回复


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


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

在我的 data-import.xml (DIH)

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

4

1 回答 1

4

我已经很久没有解决这个问题了。尝试在您的数据输入处理程序中使用此脚本。注意 - 此脚本基于 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>
于 2014-07-25T10:43:16.430 回答