TextField에 대한 MaxBytesLengthExceededException 가져 오기

Marko

나는 org.apache.lucene.util.BytesRefHash$MaxBytesLengthExceededException9 개의 요소가있는 목록을 삽입하려고 시도하는 동안 242905 바이트 길이의 목록을 Solr에 삽입하려고합니다.

오류:

"error":{
    "metadata":[
      "error-class","org.apache.solr.common.SolrException",
      "root-error-class","org.apache.lucene.util.BytesRefHash$MaxBytesLengthExceededException",
      "error-class","org.apache.solr.update.processor.DistributedUpdateProcessor$DistributedUpdatesAsyncException",
      "root-error-class","org.apache.solr.update.processor.DistributedUpdateProcessor$DistributedUpdatesAsyncException"],
    "msg":"Async exception during distributed update: Error from server at http://solr-host:8983/solr/search_collection_xx: Bad Request \n\n request: http://solr-host:8983/solr/search_collection_xx \n\n Remote error message: Exception writing document id <document_id> to the index; possible analysis error: Document contains at least one immense term in field=\"text_field_name\" (whose UTF8 encoding is longer than the max length 32766), all of which were skipped.  Please correct the analyzer to not produce such terms.  The prefix of the first immense term is: '[115, 97, 115, 109, 101, 45, 100, 97, 109, 101, 46, 99, 111, 109, 47, 108, 121, 99, 107, 97, 47, 37, 50, 50, 37, 50, 48, 109, 101, 116]...', original message: bytes can be at most 32766 in length; got 242905. Perhaps the document has an indexed string field (solr.StrField) which is too large",
    "code":400}
}

관련 solr_schema :

    <dynamicField name="text_field_*"  indexed="true" stored="true" multiValued="true" type="case_insensitive_text" />

    <fieldType name="case_insensitive_text" class="solr.TextField" multiValued="false">
      <analyzer type="index">
        <tokenizer class="solr.KeywordTokenizerFactory"/>
        <filter class="solr.LowerCaseFilterFactory"/>
      </analyzer>
      <analyzer type="query">
        <tokenizer class="solr.KeywordTokenizerFactory"/>
        <filter class="solr.LowerCaseFilterFactory"/>
      </analyzer>
    </fieldType>

에서 공식 문서 는 오류 aswell에서 볼 수 있듯이 StrField이 약간 덜 32K 이하의 하드 제한이 있음을 언급한다. 그러나 여기에 우리가 텍스트 필드를 사용하고에서 대답은 242,905 바이트 (필드가 다중되지 않았 음을 고려) 문제가되지 않을 것이 분명하다.

따라서 이러한 양의 데이터를 입력하는 데 어떤 문제가 있는지 알고 싶습니다. 주어진 예외를 피할 수있는 방법이 있습니까?

미스테리 온

KeywordTokenizerFactory모든 텍스트를있는 그대로 (토큰 화없이) 저장하는을 사용하기 때문에이 문제가 발생합니다.이 경우 저장이 불가능한 하나의 거대한 용어가 생성됩니다.

Solr / Lucene의 각 용어는 여전히 32k로 제한되어 있으므로이 예외가 발생합니다.

관련된 코드 조각 :

        if (len2 > BYTE_BLOCK_SIZE) {
          throw new MaxBytesLengthExceededException("bytes can be at most "
              + (BYTE_BLOCK_SIZE - 2) + " in length; got " + bytes.length);
        }

제한을 피하기 위해해야 ​​할 일은 텍스트를 여러 용어로 분할하는 토크 나이저를 선택하는 것입니다. 가장 유용한 것들 중 하나는 다음과 같습니다 WhitespaceTokenizerFactory, StandardTokenizerFactory물론 SOLR / 루씬은 훨씬이

이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.

침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제

에서 수정
0

몇 마디 만하겠습니다

0리뷰
로그인참여 후 검토

관련 기사

분류에서Dev

Gatsby에서 CSS 가져 오기에 대한 경고

분류에서Dev

고유 한 행 값에 대한 최대 날짜 가져 오기

분류에서Dev

복잡한 유형에 대한 완성 가져 오기

분류에서Dev

Terraform에 대한 출력 PowerShell 기능 가져 오기

분류에서Dev

유효한 동일한 디렉토리 가져 오기에 대한 PyCharm 오류

분류에서Dev

Jupyter에서 팬더 가져 오기에 대한 ModuleNotFound 오류

분류에서Dev

Lollipop API 21 기기에 대한 android : drawableEnd 경고 대신 app : drawableEndCompat 가져 오기

분류에서Dev

위치에 대한 과거 시간대 정보 가져 오기

분류에서Dev

XMLReader에 대한 속성 가져 오기

분류에서Dev

UIScrollView에 대한 모든 하위보기 가져 오기

분류에서Dev

비대화 형 셸에 대한`top` 출력 가져 오기

분류에서Dev

UINavigationBar에 대한 기본 titleTextAttributes 가져 오기

분류에서Dev

MOV 비디오에 대한 메타 데이터 가져 오기

분류에서Dev

QLocale :: Country에 대한 국가 코드 가져 오기

분류에서Dev

ListPicker에서 선택한 항목에 대한 값 가져 오기

분류에서Dev

파일에 대한 절대 경로 가져 오기

분류에서Dev

Windows 오류에 대한 블레이즈 가져 오기

분류에서Dev

TSQL : 열에 대한 최대 값이있는 행 가져 오기

분류에서Dev

SelectNode에 대한 적절한 XPath 가져 오기

분류에서Dev

특정 날짜에 대한 다른 기록 가져 오기

분류에서Dev

org.eclipse.ui.ide.application에 대한 기능 가져 오기

분류에서Dev

onCompleted에서 관찰 가능한 대상 가져 오기

분류에서Dev

django.urls에 대한 Google App Engine 가져 오기 오류

분류에서Dev

WPF UserControl에 대한 AutomationElement 가져 오기

분류에서Dev

libclntsh.so.12.1에 대한 CX_Oracle 가져 오기 오류

분류에서Dev

경고 textField에서 값 가져 오기

분류에서Dev

Oracle의 인덱스에 대한 완전한 DDL 가져 오기

분류에서Dev

termcap 기능에 대한 터미널 상태 가져 오기

분류에서Dev

NSRunningApplication에 대한 ProcessInfo 가져 오기

Related 관련 기사

  1. 1

    Gatsby에서 CSS 가져 오기에 대한 경고

  2. 2

    고유 한 행 값에 대한 최대 날짜 가져 오기

  3. 3

    복잡한 유형에 대한 완성 가져 오기

  4. 4

    Terraform에 대한 출력 PowerShell 기능 가져 오기

  5. 5

    유효한 동일한 디렉토리 가져 오기에 대한 PyCharm 오류

  6. 6

    Jupyter에서 팬더 가져 오기에 대한 ModuleNotFound 오류

  7. 7

    Lollipop API 21 기기에 대한 android : drawableEnd 경고 대신 app : drawableEndCompat 가져 오기

  8. 8

    위치에 대한 과거 시간대 정보 가져 오기

  9. 9

    XMLReader에 대한 속성 가져 오기

  10. 10

    UIScrollView에 대한 모든 하위보기 가져 오기

  11. 11

    비대화 형 셸에 대한`top` 출력 가져 오기

  12. 12

    UINavigationBar에 대한 기본 titleTextAttributes 가져 오기

  13. 13

    MOV 비디오에 대한 메타 데이터 가져 오기

  14. 14

    QLocale :: Country에 대한 국가 코드 가져 오기

  15. 15

    ListPicker에서 선택한 항목에 대한 값 가져 오기

  16. 16

    파일에 대한 절대 경로 가져 오기

  17. 17

    Windows 오류에 대한 블레이즈 가져 오기

  18. 18

    TSQL : 열에 대한 최대 값이있는 행 가져 오기

  19. 19

    SelectNode에 대한 적절한 XPath 가져 오기

  20. 20

    특정 날짜에 대한 다른 기록 가져 오기

  21. 21

    org.eclipse.ui.ide.application에 대한 기능 가져 오기

  22. 22

    onCompleted에서 관찰 가능한 대상 가져 오기

  23. 23

    django.urls에 대한 Google App Engine 가져 오기 오류

  24. 24

    WPF UserControl에 대한 AutomationElement 가져 오기

  25. 25

    libclntsh.so.12.1에 대한 CX_Oracle 가져 오기 오류

  26. 26

    경고 textField에서 값 가져 오기

  27. 27

    Oracle의 인덱스에 대한 완전한 DDL 가져 오기

  28. 28

    termcap 기능에 대한 터미널 상태 가져 오기

  29. 29

    NSRunningApplication에 대한 ProcessInfo 가져 오기

뜨겁다태그

보관