일련의 필터를 사용하여 합리적인 이름 제안 기능을 구현하려고합니다. 순간 나는 확실히 더 조정이 필요단어 조합을 만드는 solr 필터 또는 토크 나이저
<fieldType name="suggester" class="solr.TextField" positionIncrementGap="1" autoGeneratePhraseQueries="true">
<analyzer type="index">
<tokenizer class="solr.WhitespaceTokenizerFactory"/>
<filter class="solr.WordDelimiterFilterFactory" generateWordParts="1" generateNumberParts="1"
catenateWords="1" catenateNumbers="1" catenateAll="0" splitOnCaseChange="1"/>
<filter class="solr.ASCIIFoldingFilterFactory"/>
<filter class="solr.LowerCaseFilterFactory"/>
<filter class="solr.ShingleFilterFactory" outputUnigramsIfNoShingles="true" maxShingleSize="2"
outputUnigrams="true"/>
<filter class="solr.EdgeNGramFilterFactory" minGramSize="3" maxGramSize="15"/>
</analyzer>
<analyzer type="query">
<tokenizer class="solr.WhitespaceTokenizerFactory"/>
<filter class="solr.WordDelimiterFilterFactory" generateWordParts="1" generateNumberParts="1"
catenateWords="1" catenateNumbers="1" catenateAll="0" splitOnCaseChange="1"/>
<filter class="solr.ASCIIFoldingFilterFactory"/>
<filter class="solr.LowerCaseFilterFactory"/>
<filter class="solr.ShingleFilterFactory" outputUnigramsIfNoShingles="true" maxShingleSize="2"
outputUnigrams="true"/>
<filter class="solr.EdgeNGramFilterFactory" minGramSize="3" maxGramSize="15"/>
</analyzer>
</fieldType>
을 가지고,하지만 난이 질문에 대한 하나 개의 특정 측면 후입니다. 입력 문자열이 mark daniel sievers
인 경우 위의 내용은 mark
및 sievers
의 검색어와 일치하지만 실제로 원하는 것은 오버 머치가 발생하고 구성 가능한 방식으로 단어를 결합 할 수있는 필터/토크 나이저를 사용하기 때문에 EdgeNGramFilter
의 자세한 정보를 줄이는 것입니다. 입력 mark daniel rex sievers
토큰을 생성 mark sievers
, mark daniel sievers
, mark rex sievers
등등. 나는 그 어떤 paricular 알고리즘을 적용하지 못했지만 그러한 짐승이 존재하는지 (거의 확실하게) 또는 필터 플러그인으로 내 자신을 쓰는 것이 가장 좋은지 궁금하다.
SOLR 나는 ShingleFilter 사용하십시오 3.3.0