검색은 특수 문자를 해당 '일반' 문자와 일치시켜야 합니다

토픽 제목(화려한 엔티티가 포함된 표시 형태 그대로)을 검색창에 복사해서 붙여넣었습니다.
New Lowe’s commercial with UniGeezer

결과가 없습니다:

검색창에서 화려한 아포스트로피를 ‘일반적인’ 아포스트로피로 교체했습니다:
New Lowe's commercial with UniGeezer

이제 해당 토픽이 표시됩니다.

제 제안은 검색 시 모든 화려한 문자가 원래 문자와 매칭되도록 하는 것입니다.

8개의 좋아요

좋은 지적이에요. @sam, 이걸 어떻게 처리해야 할까요?

3개의 좋아요

diakritিক চিহ্ন (diacritics)는 어떻게 되나요?

현재 diakritik(첨부 기호)에 대한 정규화 기능이 이미 일부 구현되어 있으므로, 유사한 방식으로 이 문제도 수정할 수 있을 것입니다.

@tgxworld 이 부분에 대해 한번 생각해 볼 수 있을까요?

3개의 좋아요

@Canapin 이 문제를 여전히 재현할 수 있나요? 로컬에서 재현을 시도해 보았지만 실패했습니다. 검색 데이터에서 아포스트로피가 제거되므로 검색에 영향을 주지 않아야 합니다.

discourse_development=# SELECT TO_TSVECTOR('english', 'New Lowe’s commercial with UniGeezer') @@ PLAINTO_TSQUERY('english', 'New Lowe’s commercial with UniGeezer');
 ?column? 
----------
 t
(1 row)

이 문제가 발생하는 사이트를 알려주시면 재현 방법을 파악할 수 있도록 하겠습니다. 감사합니다!

1개의 좋아요

여전히 문제가 발생하는데, 정확한 문자열("으로 감싼)을 검색할 때입니다:

https://unicyclist.com/search?q=%22New%20Lowe%E2%80%99s%20commercial%20with%20UniGeezer%22

vs

https://unicyclist.com/search?q=%22New%20Lowe%27s%20commercial%20with%20UniGeezer%22

1개의 좋아요

재현해 주셔서 감사합니다. 이는 기본적으로 검색어가 "로 감싸져 있을 때 정확한 용어 검색에 영향을 미칩니다. 문제는 해당 토픽의 실제 제목이 New Lowe's commercial with UniGeezer인 반면, 형식화된 제목(fancy title)은 New Lowe’s commercial with UniGeezer이라는 점입니다. 정확한 용어 검색을 수행할 때 우리는 주어진 용어를 토픽의 실제 제목과만 매칭시키고 형식화된 제목과는 매칭하지 않기 때문입니다.

여기서 어려운 점은 ’를 무조건적으로 '로 대체할 수 없다는 것입니다. 그렇게 하면 제목에 ’가 포함된 토픽이 매칭되지 않게 됩니다. 클라이언트 측에서 토픽 제목을 표시할 때 서로 다른 문자를 표시하고 있기 때문에, 이 상황에서 무엇을 할 수 있을지 약간 불확실합니다.

@gerhard @sam 이전에 인용부호 관련 문제를 다루신 것 같습니다. 여기에 대해 어떤 아이디어가 있으신가요? 솔직히 말하자면, 이는 매우 소수의 검색 쿼리에만 영향을 미치는 경계 사례(edge case)입니다. 저는 그냥 이 문제를 넘기려는 경향이 있습니다.

1개의 좋아요

이건 장난이 아니에요! :stuck_out_tongue_winking_eye:

인덱스와 검색어에서 ’을 '으로 정규화하는 방법도 있겠죠. 하지만 솔직히 이 문제를 해결하려고 거대한 노력을 기울일 가치가 있는지 확신은 없습니다.

1개의 좋아요

이것은 검색 인덱스와 관련이 없습니다. 정확한 일치(exact match)의 경우 Post#raw와 Topic#title과 비교합니다:

1개의 좋아요

아, 그렇군요… 여기는 정말 쉬운 해결책이 없는 것 같아요. 이건 그냥 살아가야 할 작은 결함인 것 같습니다.

2개의 좋아요