2017-12-13 29 views
0

나는 다음과 같이 웹 페이지의 컨텐츠를 저장하기위한 SOLR의 제공 구성 text_general 필드를 사용 :Apache Solr에서 두문자어를 사용하는 방법?

<fieldType name="text_general" class="solr.TextField" positionIncrementGap="100"> 
    <analyzer type="index"> 
    <tokenizer class="solr.StandardTokenizerFactory"/> 
    <filter class="solr.StopFilterFactory" ignoreCase="true" words="stopwords.txt" /> 
    <filter class="solr.LowerCaseFilterFactory"/> 
    </analyzer> 
    <analyzer type="query"> 
    <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"/> 
    </analyzer> 
</fieldType> 

필드 :

ABC=>Apple Ball Company 
:

<field name="content" type="text_general" stored="true" indexed="true"/> 

말, synonyms.txt에 나는 항목이

content 필드에서 검색을 수행하는 경우 q=content:ABC 내 데이터에 내가하는 곳 "Apple Ball Company"과 (과) 관련된 콘텐츠가 없습니다.

나는 모든 단어하지 같은 순서도 함께 심지어 현재 그 단어를 포함하는 내 content에서 Apple, BallCompany에 대한 강조-조각을 얻는다.

약어 ABC 및/또는 확장명이 "Apple Ball Company"인 경우에만 강조 표시를 원합니다 (이 단어들이 동일한 순서로 함께 표시되는 경우).

답변

1

"sausagination"이라는 결과를 가져 오는 복수 단어 동의어에 대해 SynonymFilterFactory에 문제가 있습니다. 여기에서 매우 잘 설명됩니다 : https://lucidworks.com/2014/07/12/solution-for-multi-term-synonyms-in-lucenesolr-using-the-auto-phrasing-tokenfilter/ 이유는 필터가 토큰의 오프셋 만 고려하지만 위치 길이 증분은 고려하지 않기 때문입니다. 이것은 SynonymGraphFilter의 주소입니다. https://lucene.apache.org/solr/guide/6_6/filter-descriptions.html#FilterDescriptions-SynonymGraphFilter

SynonymFilterFactory 대신 SynonymGraphFilter을 사용하십시오. <filter class="solr.SynonymGraphFilterFactory" synonyms="mysynonyms.txt"/>.

+0

동일한 레코드에 'Apple Ball Company'라는 시퀀스가있는 경우에도 'Apple'만 '볼'과 '회사'만 강조 표시됩니다. 감사합니다 @ drz, 그것은 효과가있다. –