2017-03-21 1 views
0

저는 solr 기술에 대해 알고있는 초급 개발자입니다. 오늘, 나는 solr 기술을 사용하여 자동 완성을 개발하려고합니다. 나는 내 노트북에 solr 설치되었습니다. solr에 대한 저의 연구에서, solr은 데이터 수집에 필요한 object의 수를 요구합니다.solr을 사용하여 이름 모음 검색

예 :

[ { id:1, name:"Stackoverflow" }, { id:2, name:"Stackofchange" }, .....] 

내 질문에, 자신의 데이터 수집으로 기술을 이름의 지원 배열을 SOLR 수 있을까요?

예 :

["Stackoverflow", "Stackofchange", .....] 

그래서, 나는 개체의 배열로 이름의 배열을 변환하지 않았습니다.

solr이 이름의 배열을 데이터 수집으로 지원하는 경우. 내 solr 관리자에서 schema.xml을 만드는 방법을 알려 줄 수 있습니까? 난 항상 간단한 데이터 JSON

{ id:1, name:["Stackoverflow", "Stackofchange"] } 

데이터를 가져 오지 못했습니다 그러나 나는이 예외 다 치수를 사용하여 내의 schema.xml을 만들려고 한 내가

Exception writing document id 1 to the index; possible analysis error: cannot change DocValues type from SORTED to SORTED_SET for field "name"

감사를 얻었다.

나는 우리가 스키마 파일의 필드 정의에 대한 multivalued="true"을 설정해야합니다/인덱스 배열 값을 저장하려면 SOLR 기술

답변

0

에 대해 오해하고 있으면 알려 주시기 바랍니다. 당신이 스키마 파일을 수정 SOLR를 다시 시작하고 문서를 다시 인덱싱 후 name 필드

필드 (고화질)는

<field name="name" type="string" indexed="true" stored="true" multiValued="false"/> 

아래와 같이한다. 당신은 당신의 빠른 응답 나의 다음 질문 우리가 SOLR에 필드 "이름"에서 문자열을 검색 할 수 없습니다에 대한

{ id:1, name:["Stackoverflow", "Stackofchange"] } 
+0

감사를 볼 수 있습니다. 예 : "flow"키를 사용하여 문자열을 검색하고 싶습니다. 원하는 결과는 "Stackoverflow"입니다 –

+0

수 있습니다. 필드 이름을 쿼리 문자열과 함께 지정해야합니다. 예 :'q = name : flow' 이것은 n- 그램 토크 나이저를 사용해야한다는'stackoverflow'가 아니라'flow'라는 단어와 일치 할 것입니다. https://cwiki.apache.org/confluence/display/solr/Tokenizers#Tokenizers-N-GramTokenizer – vinod

+0

감사합니다. 저는 NGMLTokenizerFactory를 schema.xml에 추가하려고했습니다. 나는'q = name : flow'을 사용하여 검색했지만''numFound ': 0'을 얻습니다. 나는'{id : 1, name : [ "Stackoverflow", "Stackofchange"]}'와''q = name : flow'를 검색 한 다음''Stackoverflow "]' –