我目前正致力于基于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。在我目前的配置中,当我搜索大众汽车时 - 可能的建议包含奥迪和引擎2,而不是大众汽车的型号。
solr url:
http://xyz:8983/solr/suggest?&wt=json&facet=true&q= *&安培; facet.field =值安培; 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>
答案 0 :(得分:2)
自从我解决了这个问题已经很久了。尝试在数据输入处理程序中使用此脚本。注意 - 此脚本基于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>