2017-01-30 1 views
0

솔라의 단점 인 공백이있는 용어에 대해 동의어를 사용하려고합니다. 해킹하기 위해, 나는 하이픈과 공백을 대체 할 PatternReplaceCharFilterFactory을 사용하고 내 동의어 하이픈하기 위해 노력하고있어 : 분석 도구를 사용하여Multi-word 동의어에 PatternReplaceCharFilterFactory 사용

<fieldType name="special_synonyms" class="solr.TextField"> 
<analyzer type="index"> 
    <tokenizer class="solr.KeywordTokenizerFactory"/> 
    <filter class="solr.StandardFilterFactory"/> 
    <filter class="solr.LowerCaseFilterFactory" /> 
    <filter class="solr.EdgeNGramFilterFactory" minGramSize="2" maxGramSize="100" /> 
    <filter class="solr.WordDelimiterFilterFactory" 
      generateWordParts="1" 
      generateNumberParts="1" 
      catenateWords="1" 
      catenateNumbers="1" 
      catenateAll="0" 
      preserveOriginal="1" 
    /> 
</analyzer> 
<analyzer type="query"> 
    <tokenizer class="solr.KeywordTokenizerFactory"/> 
    <charFilter class="solr.PatternReplaceCharFilterFactory" pattern="([/\s+])" replacement="-" /> 
    <filter class="solr.KStemFilterFactory"/> 
    <filter class="solr.LowerCaseFilterFactory"/> 
    <filter class="solr.SynonymFilterFactory" synonyms="synonyms.txt"/> 
    <filter class="solr.StopFilterFactory" ignoreCase="true" words="stopwords.txt" /> 
</analyzer> 

을 내 여러 단어 검색어를 입력했을 때 올바른 동의어를 얻을 ,하지만 내가 수동으로 하이픈을 직접 추가하지 않으면 쿼리를 실행하면 0 개의 결과를 찾습니다.

답변

1

Solr의 단점은 분석기가 호출되기 전에 전에 공간 해석이 발생한다는 것입니다. 따라서 해킹이 작동해서는 안됩니다. 이 과정이 진행 중이지만 아직 준비가되지 않았습니다. 시청할 문제는 SOLR-9185

입니다. 검색어를 구문 ("quoted string")으로 보내보십시오. 또는 Field Query Parser을 사용하여 텍스트를 로컬 매개 변수 변수를 통해 보냅니다.

또는 무료 타사 Match Query Parser을 사용해 볼 수 있습니다.

관련 문제