저는 Solr과 협력 중이며 EdgeNGramFilterFactory의 작동 방식을 알고 싶습니다.Solr nGram 필터 minGramSize - 단어 2 자만의 토큰
예를 들어, "1 tb"라는 용어를 찾고 있습니다. 내가 검색하는 필드에 대한 속성이있는 제품이 거의 없습니다.
다음은이 필드 유형에 대해 색인 시간에 적용된 필터입니다.
<filter class="solr.EdgeNGramFilterFactory" minGramSize="2" maxGramSize="10" />
이제 "1 tb"라는 용어를 검색 할 때 원하는 결과를 얻지 못합니다.
"5 메가 픽셀"이라는 용어가있는 제품이 거의없고 "5 메가"를 검색하면 결과가 나옵니다. 나중에 나는 그것이 "5 나"를 위해 작동하지 않는다는 것을 발견했다. 그리고 결과를주지 않습니다.
nGram 필터를 제거하면 정상적으로 작동합니다. 또한 minGramSize = "1"로 설정하면 쿼리 "1 tb"가 올바르게 작동합니다.
나는 용어 tb에 대해 토큰 tb가 유효해야한다고 가정했습니다. 하지만 minGramSize를 2로 적용하면 생성되지 않는 것 같습니다!
누군가 설명 할 수 있습니까?
다음은 스키마에 정의 된 필드입니다.
<fieldType name="AttributesField" class="solr.TextField" positionIncrementGap="100">
<analyzer type="index">
<charFilter class="solr.MappingCharFilterFactory" mapping="mapping-ISOLatin1Accent.txt"/>
<tokenizer class="solr.StandardTokenizerFactory"/>
<filter class="solr.StopFilterFactory" ignoreCase="true" words="stopwords.txt" />
<filter class="solr.LowerCaseFilterFactory"/>
<filter class="solr.EdgeNGramFilterFactory" minGramSize="1" maxGramSize="10" />
<filter class="solr.PorterStemFilterFactory"/>
</analyzer>
<analyzer type="query">
<charFilter class="solr.MappingCharFilterFactory" mapping="mapping-ISOLatin1Accent.txt"/>
<tokenizer class="solr.StandardTokenizerFactory"/>
<filter class="solr.StopFilterFactory" ignoreCase="true" words="stopwords.txt" />
<filter class="solr.SynonymFilterFactory" synonyms="synonyms.txt" ignoreCase="true" expand="true"/>
<filter class="solr.LowerCaseFilterFactory"/>
<filter class="solr.PorterStemFilterFactory"/>
</analyzer>
</fieldType>
당신이 SOLR 관리 페이지에서 동일한 분석 않은 다음과 같은 용어로 분류됩니다? 필드에 사용 된 정확한 fieldType은 무엇입니까? –
별도의 필터 및 토큰 라이저가 필요한 텍스트 필드 유형을 만들었습니다. – Krunal
동일하게 설명 할 수 있습니까? 그게 다 뭐야? –