2013-01-26 2 views
2

SOLR을 사용하여 레일 앱에서 부분 단어를 검색하려고합니다. 이를 위해서는 schema.xml 파일을 변경해야합니다. 다른 사람 suggested, 나는 내가 레이크를 실행 이러한 변경 한 후 ...SOLR schema.xml을 변경해도 'sunspot_rails'gem을 사용하는 데 아무런 효과가 없습니다.

<fieldType name="text" class="solr.TextField" omitNorms="false"> 
    <analyzer type="index"> 
     <tokenizer class="solr.StandardTokenizerFactory"/> 
     <filter class="solr.StandardFilterFactory"/> 
     <filter class="solr.LowerCaseFilterFactory"/> 
     <filter class="solr.NGramFilterFactory" minGramSize="1" maxGramSize="15" /> 
    </analyzer> 
    <analyzer type="query"> 
     <tokenizer class="solr.StandardTokenizerFactory"/> 
     <filter class="solr.StandardFilterFactory"/> 
     <filter class="solr.LowerCaseFilterFactory"/> 
    </analyzer> 
</fieldType> 

<fieldType name="text" class="solr.TextField" omitNorms="false"> 
    <analyzer> 
    <tokenizer class="solr.StandardTokenizerFactory"/> 
    <filter class="solr.StandardFilterFactory"/> 
    <filter class="solr.LowerCaseFilterFactory"/> 
    </analyzer> 
</fieldType> 

를 제거하고 추가 내 "되는 app_root/SOLR/conf의 /의 schema.xml"파일을 업데이트 한 명령 rake sunspot:reindex을 실행하고 100 % 완전하게 색인을 다시 생성하십시오. 그런 다음 서버를 시작합니다 ... 그러나 부분적인 단어가 아닌 전체 단어에 대해서만 응답을 받고 있습니다.

if params[:sSearch].present? 
    @search = Style.search do 
    fulltext params[:sSearch] 
    end 
    styles = @search.results 
end 

어떤 도움을 크게 감상 할 수 ...

searchable do 
    text :full_name 
    #full_name is just one of Style's attribute columns 
    end 

과 인출하고 코드 : 그것은 중요한 다만 경우에

, 여기에 관련된 내 스타일 모델에서 코드입니다. 참조의

은 다음을 참조하십시오

https://github.com/sunspot/sunspot/blob/master/README.md

http://wiki.apache.org/solr/AnalyzersTokenizersTokenFilters#solr.EdgeNGramFilterFactory

답변

0

당신이 SOLR 4 사용하는 경우이 문제를 해결하는 가장 좋은 건 관리자 인터페이스에서 창을 분석에 가서 몇 가지 테스트 문자열을 실행하는 것입니다 색인 및 쿼리 인터페이스에 대해 드롭 다운에서 '텍스트'유형 또는 유형 자체의 필드를 선택할 수 있습니다.

특정 설정에서 모든 단어에 대해 첫 번째 문자 (실제로?)에서 15 자까지의 모든 시작 부분 집합과 일치 시키려고합니다. 누군가 'a'를 검색하면 'a'부터 모든 단어를 얻을 수 있습니다. 너가 원하는게 그거야?

흑점 부분의 문제를 해결하기 전에이 모든 것을 시험해보십시오.

1

실행중인 Solr 버전은 무엇입니까? Solr 4를 사용하는 동안 비슷한 문제가 발생했다. 솔라 서버가 다시 시작되면 스키마가 업데이트되지만 인덱스는 스키마마다 변경되지 않는다. 다시 시작하고 다시 인덱싱하는 데 많은 시간을 소비 한 후 업데이트 된 구성으로 새 코어 (새 컬렉션)를 만들었습니다.

따라서 새 코어를 완전히 만들어보고 도움이되는지 확인하십시오. 행운을 빕니다!

2

sunspot_solr-2.1.1 이후 버전에서 변경된 사항이 없으면 Solr이 [rails_root]/solr 디렉토리에 복사 된 schema.xml을 읽지 않는 것이 문제입니다. gem 파일 (대략 : /gems/sunspot_solr-2.1.1/solr/solr/conf/schema.xml)에있는 schema.xml을 읽습니다.

나는이 파일을 변경하고, 서버를 다시 시작하고, solr 관리 인터페이스에서 스키마를 확인함으로써이를 확인할 수있었습니다.

내 Mac과 내가 사용하는 가상 상자 (Ubuntu 14.04 LTS - Trusty Tahr)에서 동일한 방식으로 작동합니다.

(반창고) 해결책은 거기에있는 파일을 편집하고 사용하는 것입니다. 먼저 백업하십시오.

3

나는 비슷한 문제로 실행하고, 용액이 SOLR 인스턴스를 다시 시작하고 bundle exec rake 아니라 rake으로 재 인덱싱을 실행하는 것입니다 :

$ bundle exec rake sunspot:solr:stop 
$ bundle exec rake sunspot:solr:start 
$ bundle exec rake sunspot:reindex 
관련 문제