커뮤니티 사용자 중 일부가 Fediverse 사용자 이름을 위한 사용자 정의 프로필 필드를 추가해 달라고 요청했습니다. 추가하는 것은 간단합니다.
이 필드를 검색 가능하게 만드는 실험을 해 보았습니다. 이것이 어떻게 작동하는지 설명하는 게시글을 찾았지만, 현재 사용 중인 Discourse 버전(최신 상태)에는 해당 인터페이스가 제공되지 않습니다. 빠른 검색 필드에서는 결과를 확인할 수 있으며(값으로 레이블이 지정되어 있어 좋습니다) 확장 검색에서는 일치하는 사용자를 보여줍니다.
하지만… 모든 일치 항목을 가져오지 못하고 있습니다. 이 사용자 정의 필드에 "mastodon"을 입력한 사용자가 저를 포함해 최소 3명 더 있습니다. 인덱싱에 어떤 지연이 있는 걸까요?
SELECT ucf.user_id,
ucf.value,
ucf.updated_at AS reltime$time
FROM user_custom_fields ucf
WHERE ucf.name = 'user_field_1'
AND ucf.value IS NOT NULL
ORDER BY ucf.updated_at DESC
여기서 'user_field_1'은 표시하려는 사이트의 사용자 정의 필드입니다. Discourse는 Customize → User Fields 페이지의 필드 텍스트 이름 대신 user_custom_fields 테이블 내 사용자 정의 필드의 이름으로 user_field_1, user_field_2, user_field_3 등을 사용한다는 점에 유의하십시오.
원한다면 다음을 사용하여 사이트의 모든 사용자 정의 필드 이름과 해당 user_field 번호를 가져올 수 있습니다:
SELECT uf.id, uf.name
FROM user_fields uf
여기서 user_field의 ID는 user_custom_fields 테이블 내의 user_field_X 이름이 됩니다.
이 점을 고려할 때, 사용자 필드가 검색 가능하도록 설정되어 있는 한 검색 창에서 사용자 필드를 검색할 수 없는 이유를 알 수 없습니다.
고급 검색 메뉴를 사용하여 검색 위치로 "Users"를 선택해 보시고 동일한 결과가 나오는지 확인해 보시기 바랍니다:
Alex님, 감사합니다. Data Explorer 플러그인이 정말 잘 작동했습니다(처음 사용해 보는 것이었는데).
사용자(User) 항목에서 검색이 전혀 작동하지 않습니다. 해당 필드의 값은 피디페더(Fediverse) 사용자 이름이며, 제 항목은 다음과 같습니다.
@cogdog@mastodon.social
하지만 'mastodon’이라는 문자열로 사용자를 검색해도 결과가 나오지 않습니다. 부분 문자열 매칭을 지원하지 않는 건가요? 이 문제는 치명적이지는 않고, 이 필드의 검색 가능(searchable) 플래그를 꺼버릴 수도 있을 것 같습니다. 이 필드에 값을 입력한 모든 사용자를 사용자가 쉽게 볼 수 있는 방법을 제공하길 원했는데, 비어 있지 않은 항목을 찾을 수 있는 일반 검색 옵션이 있는지요?