2012-03-28 3 views
0

현재 solr 기반 검색 응용 프로그램에서 작업 중입니다. 예 : 데이터가 데이터베이스에서 읽혀집니다.Apache 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를 만들려고했습니다. 내 현재 설정에서 폭스 바겐을 검색 할 때 - 가능한 제안은 폭스 바겐 모델을 언급하지 않는 audi와 engine2를 포함합니다. SOLR의 URL :

http://xyz:8983/solr/suggest?&wt=json&facet=true&q= * & facet.field = 값은 & facet.prefix = 폭스 바겐

나는 Solr Faceting on Multiple Concatenated Fields이 함께 할 수있는 뭔가가 있다고 생각하지만, 나는 내 문제에 그것을 조정할 수 없습니다. 회신

감사


은 어쩌면 내가 값을 결합하고 입력 할 TemplateTransformer를 사용할 수 있습니까?


템플릿 트렌스머를 사용하여 결과가 나타납니다. Marke | 내 데이터 import.xml에서 폭스 바겐

(다이 하이드로는)

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

+0

서식을 일부 변경하고 사람들이 귀하의 질문을 이해하지 못하게하는 두 가지 문법 문제를 수정했습니다. – aitchnyu

+2

은 정말로 귀하의 질문을 이해하지 못합니다 .... 조금 더 정교 해주십시오. – Yavar

+0

http://stackoverflow.com/questions/9521304/solr-faceting-on-multiple-concatenated-fields가 도움이 될까요? – jpountz

답변

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> 
+0

동적 필드를 추가하고 변압기를 사용했습니다. 굉장한!! – nish