2014-10-06 4 views
0

Solr 4.10의 예제 데이터베이스를 실험 중이며 dynamicFields의 작동 방식을 실험하고 있습니다. 나는 (JSON 형식으로 말 "example_s":"goober") 새 필드의 이름으로 새 항목을 추가하는 경우 스키마는,Solr dynamicField가 필드 이름없이 쿼리에서 검색되지 않았습니다.

?q=goober 

반환하지 일치 같은 쿼리를

dynamicField name="*_s" type="string" indexed="true" stored="true" 

정의

?q=example_s:goober 
동안

이 일치하는 항목을 찾습니다. 내가 뭘 놓치고 있니?

답변

0

위에서 언급 한 쿼리를 실행하는 데 사용하는 solrconfig.xml 파일의 SearchHandler를보고 싶습니다.

SearchHandler에는 일반적으로 기본 검색어 입력란, 즉 qf 매개 변수가 있습니다.

동적 필드 example_s이 solrconfig 파일의 쿼리 필드 목록에 있는지 확인하십시오. 그렇지 않으면 쿼리를 검색 처리기로 보내는 동안 전달할 수 있습니다.

희망 사항은 문제 해결에 도움이 될 것입니다. 기본 스키마를 사용하는 경우

+0

qf 매개 변수의 필드 목록을 업데이트하고 Solr을 다시 시작한 다음 문서를 다시 색인 한 후에도 대답은 정확하다고 생각하지만 여전히 작동하지 않습니다. Solr은 Elasticsearch와 반대되는 접근 방식을 취하는 것 같습니다. 기본 구성이 모든 것을 색인하기 때문에 Elasticsearch를 몇 분 만에 시작했습니다.Solr의 기본 설정은 기본적으로 무엇을 색인 할 때까지 아무것도 색인하지 않습니다. – user3528023

0

, 여기에 무슨 일이 일어나고 있는지 : 당신은 검색 유형과 그에서 매개 변수의 정의를 얻을 수 있도록

  1. 당신은 아마, (/ 선택) 기본 엔드 포인트를 사용하고 있습니다. 즉, 기본값 (lucene) 검색이고 the field searched is text입니다.
  2. 텍스트 필드는 집합이며 copyField instruction from other fields으로 채워집니다.
  3. dynamic field definition for *_s을 사용하면 example_s와 같이 _s로 끝나는 이름의 텍스트를 색인 할 수 있습니다. 색인이 생성되어 (직접 검색 할 수 있으므로) 모든 필드를 요구할 때 볼 수 있도록 저장됩니다. 그러나 일반 텍스트로 검색하지는 않습니다. ElasticSearch와 달리 Solr 문자열은 완전히 완전하게 일치해야합니다. 일부 단어가 여러 단어로 된 경우 검색하는 지점이 거의 없습니다. "goober"은 하나의 단어이므로 차이점을 이해하는 것은 좋은 예제가 아닙니다.
  4. 가장 쉬운 해결책은 다른 copyField 명령어를 추가하는 것입니다 : <copyField source="*_s" dest="text"/>, 모든 * _s 동적 필드도 검색 가능합니다. 그러나 검색 분석기는 이 아니며은 * _s 정의의 것이고 for the text field's definition은 문자열이 아니고 text_general이며 파일의 다른 위치에 정의되어 있습니다.

Solr 대 ElasticSearch의 경우, 둘 다 마술의 다른면에서 오류가 발생합니다. Solr을 사용하면 시스템을 구성하고 정확한 현재 구성을 쉽게 볼 수 있습니다. ElasticSearch는 모든 구성을 숨기지 만 기본 동작에서 벗어나 변경하려는 순간을 재발견해야합니다. 결국, 그 결과는 아마도 유사 할 것이며 중간의 어떤 곳에서 만나게 될 것입니다.

관련 문제