>source

마침표를 어떻게 교체 할 수 있는지 궁금합니다. [ . ] 데이터를 solr로 인덱싱하는 동안

제외, 특정 문구로 시작하는 단어를 전체 토큰으로 유지하고 싶습니다.

예를 들어

word.phrase  두 개의 키워드로 색인되어야합니다 : word phrase

그러나 item. 접두사가 붙은 것을 원한다  마침표로 분리되지 않도록 다음을 수행하십시오.

item.name  하나의 키워드로 색인되어야합니다 : item.name

이 필터/토커 나이저를 시도하고 있지만 여전히 운이 좋지 않습니다. 정규 표현식이 범인이라고 생각합니다.

<fieldType name="text_general" class="solr.TextField" positionIncrementGap="100">
  <analyzer type="index">
      <charFilter class="solr.PatternReplaceCharFilterFactory" 
            pattern="[^(item)]\." replacement=" " />
      <tokenizer class="solr.StandardTokenizerFactory"/>
  </analyzer>
</fieldType>

  • 답변 # 1

    "p"앞에 "bar"가없는 경우에만 "foo"를 일치 시키려면 정규 표현식에 음의 비하인드 어설 션이 필요합니다.

    다음 정규식은 "item"이없는 점과 일치합니다. (?<!\bitem)\.
    schema.xml에서 패턴을 올바르게 구문 분석하려면 xml 이스케이프해야합니다. <   &lt; 가된다 :

    pattern="(?&lt;!\bitem)\."
    
    

    대체 문자 필터 대신필터(토큰 라이저 뒤에뒤에배치)를 사용할 수 있습니다.

  • 이전 database - Java를 사용하여 외부 MongoDB에"MongoSocketException"을 수정하는 방법?
  • 다음 html - 공백 사이는 여백을 산출하지 않습니다