2013-02-11 2 views
0

나는 Rails의 초보자이며 검색 기능 구현을 위해 Sunspot을 사용하고 있습니다.RoR 응용 프로그램에서 비슷한 문구 검색

환자 이름을 검색하고 싶습니다. 지금까지 전체 텍스트 방법을 사용하여 검색 중이며 작동 중입니다. 그러나 나는 다음과 같은 기능을 원합니다. 이름이 홍길동 인 경우

, 나는 내가 문자열로 검색 할 때이 결과를 표시 할 '들은 SMI'

난 당신이 경우 해결책

답변

0

을 태양 흑점 문서를 컨설팅했지만 찾을 수 없습니다 전체 텍스트 검색에서 하위 문자열을 반환하려는 경우 Full text Searching을 볼 수 있습니다.

당신은 당신이 myapp/config/initializers/에서 결과 페이지 매기기에 파일 sunspot_solr.rb을 추가 할 수있는 것보다 검색에서 오는 당신의 결과의 페이지 매김하고 싶은 경우

Sunspot.config.pagination.default_per_page = 100 

수익이 경우 100 개 결과.

라이트 박스 :

귀하의 schema.xml 파일은 또한 임의의 문자열과 일치하는 <filter class="solr.NGramFilterFactory"/>을 추가 할 수 있습니다 yourappfolder/solr/conf

년에 설립된다.

schema.xml 내 특정 설정은 다음과 같습니다

<fieldType name="text" class="solr.TextField" omitNorms="false"> 
     <analyzer> 
     <tokenizer class="solr.StandardTokenizerFactory"/> 
     <filter class="solr.StandardFilterFactory"/> 
     <filter class="solr.LowerCaseFilterFactory"/> 
     </analyzer> 
    </fieldType> 
    <fieldtype class="solr.TextField" name="text_pre" positionIncrementGap="100"> 
     <analyzer type="index"> 
     <tokenizer class="solr.WhitespaceTokenizerFactory"/> 
     <filter class="solr.LowerCaseFilterFactory"/> 
     <filter class="solr.NGramFilterFactory" minGramSize="2" maxGramSize="10"/> 
     <filter class="solr.ISOLatin1AccentFilterFactory"/> 
     <filter class="solr.TrimFilterFactory" /> 
     <filter class="solr.EdgeNGramFilterFactory" minGramSize="2" maxGramSize="10"/> 
     </analyzer> 
     <analyzer type="query"> 
     <tokenizer class="solr.WhitespaceTokenizerFactory"/> 
     <filter class="solr.LowerCaseFilterFactory"/> 
     <filter class="solr.ISOLatin1AccentFilterFactory"/> 
     <filter class="solr.TrimFilterFactory" /> 
     </analyzer> 
    </fieldtype> 

서버를 다시 시작하고 변경 내용을 적용하려면 모델을 인덱싱하는 것을 잊지 마십시오.