2012-01-17 5 views
3

이 내 (꽤 표준) N- 그램 스키마입니다 -SOLR N- 그램 매치 화가

<fieldType name="ngram" class="solr.TextField" positionIncrementGap="100" stored="false" multiValued="true"> 
    <analyzer type="index"> 
    <tokenizer class="solr.StandardTokenizerFactory"/> 
    <filter class="solr.LowerCaseFilterFactory"/> 
    <filter class="solr.NGramFilterFactory" minGramSize="1" maxGramSize="15"/> 
    </analyzer> 
    <analyzer type="query"> 
    <tokenizer class="solr.StandardTokenizerFactory"/> 
    <filter class="solr.LowerCaseFilterFactory"/> 
    </analyzer> 
</fieldType> 

지금 laptop_ngram "g74sx-A"반환 -

<arr name="laptop_ngram"> 
    <str>ASUS G74SX-A1 17.3-Inch Gaming Laptop</str> 
</arr> 

하지만 laptop_ngram을 "g74sx-A1 "아무것도 찾지 못한다.

"-"을 이스케이프 처리해도 아무런 차이가 없습니다.

의견이 있으십니까?

+0

동일한 분석을 사용하지 않는 이유 쿼리에 대한 zer도 설정 되었습니까? –

+0

solr.NGramFilterFactory를 쿼리 분석기에 추가 하시겠습니까? – Jerry

+0

예 (12 문자를 넣어야합니다.) –

답변

1

StandardTokenizerFactory는 용어에 무엇인가 할 수 있습니다. 분석 페이지에서이를 확인할 수 있습니다.

그래서 WhitespaceTokenizerFactory로 변경하면 문제가 해결 될 수 있습니다.

+0

WhitespaceTokenizerFactory를 사용해 보았습니다. 불행히도 결과가 좋지 않아서 "g74sx a1"을 찾았지만 정식 생산 모델 "g74sx-a1"을 먹이지는 않았습니다. 포인터 덕분에 제게 새로운 방향을 제시해주었습니다. WordDelimiterFilterFactory가 도움이 될 것 같지만 30 분이 넘었고 Solr 3.4에 대한 다운로드/컴파일/추가 방법을 찾지 못했습니다. ( – Jerry

+0

다운로드 할 필요가 없습니다. 자세한 내용은 http://wiki.apache.org/solr/AnalyzersTokenizersTokenFilters#solr.WordDelimiterFilterFactory를 참조하십시오. –

1

누가 나를 새로운 방향으로 보여준 오 클라인 (O. Klein) 덕분입니다.

내가 마지막으로 WhitespaceTokenizerFactory 플러스 WordDelimiterFilterFactory로 정착 -

그러나 "g74sx", "g74sx-", "g74sx-A"및 "g74sx-A1"

작동

<fieldType name="ngram" class="solr.TextField" positionIncrementGap="100" stored="false" multiValued="true"> 
    <analyzer type="index"> 
    <tokenizer class="solr.WhitespaceTokenizerFactory"/> 
    <filter class="solr.WordDelimiterFilterFactory" generateWordParts="1" generateNumberParts="1" catenateWords="1" catenateNumbers="1" catenateAll="1" preserveOriginal="1"/> 
    <filter class="solr.LowerCaseFilterFactory"/> 
    <filter class="solr.NGramFilterFactory" minGramSize="1" maxGramSize="15"/> 
    </analyzer> 
    <analyzer type="query"> 
    <tokenizer class="solr.WhitespaceTokenizerFactory"/> 
    <filter class="solr.LowerCaseFilterFactory"/> 
    </analyzer> 
</fieldType> 

, 아직 그 이유를 모색 중이므로 여정이 끝나지 않았습니다. -

"g74sx-x"및 "g74sx-xa1"에는 "g74sx-xa1"이 있지만 "g74sx-xa"에는 없습니다. .