문자열에 대한 자동 태그가 *문자열*에 적용됨

이 버그는 짧은 문자열, 예를 들어 "art"에 대해 자동 태그 규칙을 설정했을 때 발견되었습니다. 그 결과 "artificial"과 같은 주제에 자동으로 태그가 붙었습니다.

참고: 자동 태그 규칙 페이지의 “테스트” 기능은 정상적으로 작동합니다(자동 태그가 "art"로 설정된 경우, 테스트에서 "artificial"은 태그를 생성하지 않습니다).

이 버그는 아마도 짧은 감시 대상 단어에 대해 자동 태그를 설정하는 경우가 드물기 때문에 발견되지 않았을 가능성이 큽니다.

4개의 좋아요

저도 @codinghorror 님이 이 문제를 인지하셨을 것 같습니다. 해결 목록에 올려두었습니다.

4개의 좋아요

이 버그를 수정하여, replace, link, tag의 감시 대상 단어가 이제 전체 단어에 대해 적용됩니다.

watched_words_regular_expressions가 활성화된 경우 예외가 적용됩니다.

4개의 좋아요

답장 주셔서 감사합니다, Bianca.

watched_word_regular_expression이 기본적으로 활성화되어 있었고, 이것이 '전체 단어 처리’를 깨뜨린다는 사실을 깨닫지 못했던 것 같습니다. 전체 단어 처리가 정규식과 호환되지 않는 것이 꼭 필요한 것인가요?

즉, 이 문제를 버그로 간주해야 하는지, 아니면 다른 기능으로 인해 발생한 필수적인 제약 조건으로 봐야 하는지 궁금합니다.

아직까지는 버그라고 생각하고 있습니다. 정규식이 지정된 경우, 정규식이 아닌 전체 단어 파싱이 정규식 파싱과 왜 호환되지 않아야 하는지 이해할 수 있는 이유가 없습니다.

Norman님,

감시 대상 단어 중 일부에 정규식(regex)을 사용 중이시라면, 해당 설정은 모든 단어에 적용됩니다. 따라서 정규식이 활성화되어 있고 art에 대해 자동 태그가 설정되어 있다면, artificial에도 태그가 지정되는 것이 정상입니다. art라는 단어만 정확히 검색하려면 단어 경계 메타문자 \b를 사용하세요. art의 경우 \bart\b와 같이 작성하시면 됩니다.

3개의 좋아요

활성화 상태일 때 해당 필드의 의미가 상당히 달라지므로, UI에서 이 기능이 활성화되어 있음을 알려주도록 해야 합니다.

비밀번호 입력 시 대문자 잠금(CAPS LOCK)이 켜져 있다는 알림과 비슷한 개념입니다.

3개의 좋아요

모두에게 감사드립니다. 정칙 표현에 대한 제 다소 평범한 이해가 부족해서 감시 단어(watched words)가 어떻게 작동하는지 오해하게 되었다면 사과드립니다. 하지만… 몇 가지 말씀드릴 점이 있습니다:

  • 저는 정칙 표현의 문맥이 “단어 경계 내 문자열” 같은 의미로 처리된다고 생각했습니다. 다른 합리적인 해석이 있을까요? 당연히 전체 주제 문서 전체는 아닐 것입니다. 이 경우 'artificial’이 태그되려면 art*(또는 이 주제 제목에서 언급된 바와 같이 art.* 등)를 지정해야 합니다.

  • Joshua: 단어 경계 메타문자 제안에 감사합니다. 방금 테스트해 보았지만 작동하지 않았습니다. 테스트 기능에서도, 실제 환경에서도 마찬가지였습니다. 따라서… 현재로서는 우회 방법(또는 원하는 동작을 얻기 위한 ‘올바른 방법’)이 없는 것으로 보입니다.

  • 테스트 기능은 매우 좋습니다. 직관적으로 생각했던 대로 정확히 작동하는 것 같습니다. art는 "art"라는 단어가 나타날 때만 트리거되고(artificial에서는 트리거되지 않음), art*는 예상대로 "artificial"에서 트리거됩니다. 또한, art* life는 "art life"와 “artificial life” 모두에서 트리거됩니다. 단일 단어만 입력하면 테스트 기능이 정칙 표현 파싱을 사용하지 않을 수도 있다고 생각했지만, 그렇지 않습니다… foo* art는 "foobar art"에서 트리거되고, "foobar artificial"에서는 트리거되지 않습니다. 따라서… 테스트 기능을 작성한 사람은 저와 같은 방식으로 생각하고 있었던 것 같습니다(생각컨대).

결론적으로,

  • Jeff가 제안한 watched_words_regular_expressions가 활성화되어 있다는 알림은 좋은 아이디어입니다.
  • 테스트 기능의 동작은 실제 동작과 일치해야 합니다.
    • 참고로, 제 선호도는 실제 동작이 현재 테스트 기능의 동작과 일치하는 것입니다.
  • 현재 테스트 기능에서 제안하는 것보다 더 많은 정칙 표현 지식이 필요하다고 느끼는 경우, 어딘가에 예시가 제공되면 좋겠습니다.
  • 우회 방법이나 ‘올바른 방법’(예: 원하는 동작을 얻으려면 \bart\b 사용)이 있다면 기꺼이 사용하겠습니다.

다시 한번, 위대한 플랫폼에서 다소 사소한 이 문제에 관심을 가져 주신 모든 분께 감사드립니다.

2개의 좋아요

@zogstrip에게 이 작업이 할당되었는지 확인해 주시겠어요?

4개의 좋아요

이 PR에서 감시 단어 정규식 사이트 설정이 활성화될 때 알림을 추가했습니다:

정규식이 비활성화된 상태와 활성화된 상태의 모습입니다 (알림과 다른 입력 자리 표시자를 확인하세요):

4개의 좋아요

하지만 Bianc님,
제 ‘art’ 패턴을 \b\bart\b\b로 시도해 보았지만, 'art’에서는 트리거가 발생하지 않았습니다(발생하지 않아야 하는 'artificial’도 마찬가지입니다).

이 시도는 자동 태그를 위한 것이었습니다.

기존의 Test 함수를 그대로 사용하여 주제를 파싱(자동 태그를 위해)할 수 없는 이유가 있을까요?

Norman님,

watched words regular expressions 사이트 설정을 활성화한 경우, \b는 단어 경계를 나타내므로 \bart\b와 같이 사용해야 합니다. 사이트 설정이 비활성화되어 있으면 단어 경계가 자동으로 포함되므로 이를 사용할 필요가 없습니다.

저도 이 부분을 테스트해 보았는데, 테스트 모달을 포함해 모두 정상적으로 작동했습니다:

해당 기능을 구현했으며 최신 버전에서 정상적으로 작동할 것입니다.

3개의 좋아요

Bianca님, 안녕하세요.
이 문제를 확인해 주셔서 정말 감사합니다.

  1. watched words regular expressions 활성화에 대해 혼란스러웠습니다. 자동 트리거 지정에 * 와일드카드를 사용하면 자동으로 설정되는 줄 알았거든요. 그게 아닌 것 같으니 \bart\b 시도가 실패한 것도 놀랍지 않네요.
  2. 테스트 함수 구현을 확인하기 위해 '최신 버전’을 확인해 보겠습니다. 제 경우 Test는 항상 작동했으며, Bianca님에게도 마찬가지인 것 같습니다.
    다시 한번 감사합니다!
2개의 좋아요