# 제목이 검색어와 일치할 경우 토론 첫 번째 게시물을 우선 표시해야 합니다

**URL:** https://meta.discourse.org/t/search-results-should-prioritize-first-post-in-topic-when-title-matches-search-term/175154
**Category:** Feature
**Created:** [1월 5, 2021, 1:15오후 UTC](https://meta.discourse.org/t/search-results-should-prioritize-first-post-in-topic-when-title-matches-search-term/175154 "2021-01-05T13:15:39Z")
**Posts on this page:** 20
**Page:** 1

<div class="post-metadata">

### Author: ![seanblue](https://avatars.discourse-cdn.com/v4/letter/s/dc4da7/32.png) [@seanblue](https://meta.discourse.org/u/seanblue)
#### Post date: [1월 5, 2021, 1:15오후 UTC](https://meta.discourse.org/t/search-results-should-prioritize-first-post-in-topic-when-title-matches-search-term/175154/1 "2021-01-05T13:15:39Z")

</div>

최근 특정 주제를 검색할 때, 첫 번째 게시글이 아니라 주제 중간에 있는 게시글이 검색 결과로 표시되는 것을 알게 되었습니다. 이는 해당 주제 내의 게시글이 주제 제목에 포함된 검색어와 동일한 경우 발생합니다. [http://community.wanikani.com에서](http://community.wanikani.xn--com-k94n91q) 최근 발견한 두 가지 예시는 다음과 같습니다:

“Self Study Quiz” 또는 "Self-Study Quiz"를 검색하면 첫 번째 게시글 대신 [[Userscript] Self-Study Quiz - #731 by prouleau - API And Third-Party Apps - WaniKani Community](https://community.wanikani.com/t/userscript-self-study-quiz/13191/731) 이 표시됩니다.

"ご注文はうさぎですか"를 검색하면 첫 번째 게시글 대신 [ご注文はうさぎですか miscellaneous discussion - #93 by seanblue - Book Clubs - WaniKani Community](https://community.wanikani.com/t/%E3%81%94%E6%B3%A8%E6%96%87%E3%81%AF%E3%81%86%E3%81%95%E3%81%8E%E3%81%A7%E3%81%99%E3%81%8B-miscellaneous-discussion/32323/93) 가 표시됩니다.

이 문제를 #Contribute > Feature 에 올린 이유는, 제가 설명하는 방식으로 작동한 적이 100% 있는지는 확실하지 않기 때문입니다. 하지만 위에서 언급한 두 번째 검색어는 연 몇 번씩 검색하며, 과거에는 검색 결과가 주제 내의 첫 번째 게시글을 반환했던 것으로 _확신_합니다. 만약 이 기능이 의도치 않게 어딘가에서 변경되었다면, 이 문제를 #Contribute > Bug 로 간주할 수 있습니다.

주제 제목만 검색할 수 있는 고급 검색 옵션이 있다는 것을 알고 있지만, 이 경우 그 기능은 불필요해 보입니다. 검색어가 주제 내의 여러 게시글은 물론 제목 자체와도 일치하므로, 제목 일치 항목을 자동으로 우선하여 첫 번째 게시글을 반환해야 한다고 생각합니다.

---

<div class="post-metadata">

### Author: ![codinghorror](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/codinghorror/32/110067_2.png) [@codinghorror](https://meta.discourse.org/u/codinghorror)
#### Post date: [1월 6, 2021, 5:33오후 UTC](https://meta.discourse.org/t/search-results-should-prioritize-first-post-in-topic-when-title-matches-search-term/175154/2 "2021-01-06T17:33:42Z")

</div>

이것은 최근 @tgxworld와 @sam이 검색에 대해 적용한 변경 사항의 결과입니다. 두 분의 답변을 기다리고 있습니다.

---

<div class="post-metadata">

### Author: ![sam](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/sam/32/102149_2.png) [@sam](https://meta.discourse.org/u/sam)
#### Post date: [1월 7, 2021, 5:59오전 UTC](https://meta.discourse.org/t/search-results-should-prioritize-first-post-in-topic-when-title-matches-search-term/175154/3 "2021-01-07T05:59:44Z")

</div>

네, 이 문제에 대해 긴 논의가 있었어요. 전반적으로 제 취향은 검색을 아주 단순하게 만들어서, 랭킹과 무관하게 항상 해당 토픽의 첫 번째 일치 항목을 우선시하는 거예요. 이렇게 하면 사람들에게 설명하기 훨씬 쉬워지고, 랭킹은 매우 자의적이고 마법처럼 느껴지기 때문이죠.

---

<div class="post-metadata">

### Author: ![fhe](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/fhe/32/113345_2.png) [@fhe](https://meta.discourse.org/u/fhe)
#### Post date: [1월 7, 2021, 8:46오전 UTC](https://meta.discourse.org/t/search-results-should-prioritize-first-post-in-topic-when-title-matches-search-term/175154/5 "2021-01-07T08:46:43Z")

</div>

> [@sam](#):
>
> 랭킹과 무관하게. 랭킹은 매우 자의적이고 마법 같은 느낌이 들어, 사람들에게 설명하기가 훨씬 어렵습니다.

OT에서 요청한 내용을 이해했습니다. _토픽 제목_이 검색 조건과 일치하는 경우, 검색이 토픽 자체(즉, 첫 번째 게시물)를 참조하도록 하자는 것입니다. 그렇지 않으면, 매치가 발생한 구체적인 게시물을 참조하도록 하면 됩니다.

---

<div class="post-metadata">

### Author: ![sam](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/sam/32/102149_2.png) [@sam](https://meta.discourse.org/u/sam)
#### Post date: [1월 7, 2021, 8:48오전 UTC](https://meta.discourse.org/t/search-results-should-prioritize-first-post-in-topic-when-title-matches-search-term/175154/6 "2021-01-07T08:48:10Z")

</div>

문제는 한 주제 내에서 15개의 매치가 있을 수 있고, 그 15개 중 하나가 가장 높은 “rank”를 가진다는 것입니다.

---

<div class="post-metadata">

### Author: ![seanblue](https://avatars.discourse-cdn.com/v4/letter/s/dc4da7/32.png) [@seanblue](https://meta.discourse.org/u/seanblue)
#### Post date: [1월 7, 2021, 1:07오후 UTC](https://meta.discourse.org/t/search-results-should-prioritize-first-post-in-topic-when-title-matches-search-term/175154/7 "2021-01-07T13:07:59Z")

</div>

> [@sam](#):
>
> 제 취향은 검색을 아주 단순하게 만들어서 랭킹과 무관하게 항상 토픽 내 첫 번째 일치 항목을 우선시하는 것입니다. 이렇게 하면 사람들에게 설명하기 훨씬 쉽습니다. 랭킹은 매우 자의적이고 마법 같은 느낌이 들거든요.

솔직히 말해서, 첫 번째 게시물(제목 일치 기준)이 다른 모든 것보다 우선시되는 한 나머지 부분은 크게 신경 쓰지 않습니다. 다만, 당신이 말씀하신 내용은 합리적으로 들립니다. 검색하는 정확한 문구와 일치하는 게시물이 토픽에 열두 개나 있을 때, 검색 결과에 실제로 반환되는 게시물이 현재로서는 분명히 자의적으로 느껴집니다. 제 생각에는 토픽 내에서 가장 이른 시점의 일치 게시물을 항상 반환하는 것이 좋은 해결책입니다.

그럼에도 불구하고, 검색 알고리즘은 최소한 정확한 일치 항목을 우선시해야 합니다. 그래야 검색어와 부분적으로만 일치하는 이전 게시물이 정확한 일치 항목인 후속 게시물보다 우선시되는 일이 방지됩니다. 알고리즘에 대해 잘 알지 못하기 때문에 이것이 관련 있는 사항인지 확신은 없습니다. 어쨌든, 앞서 말했듯이 제목 일치 항목을 모든 것보다 우선시하는 것보다 이 모든 세부 사항들은 훨씬 중요하지 않다고 생각합니다.

---

<div class="post-metadata">

### Author: ![seanblue](https://avatars.discourse-cdn.com/v4/letter/s/dc4da7/32.png) [@seanblue](https://meta.discourse.org/u/seanblue)
#### Post date: [1월 8, 2021, 12:46오전 UTC](https://meta.discourse.org/t/search-results-should-prioritize-first-post-in-topic-when-title-matches-search-term/175154/8 "2021-01-08T00:46:46Z")

</div>

주제 중간에 있는 내 게시글을 링크해서 공유하려는 주제 자체를 공유하려던 사람들에게 계속 태그를 걸리고 있습니다. 현재 방식은 분명히 혼란을 유발하고 있습니다.

---

<div class="post-metadata">

### Author: ![codinghorror](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/codinghorror/32/110067_2.png) [@codinghorror](https://meta.discourse.org/u/codinghorror)
#### Post date: [1월 12, 2021, 8:36오후 UTC](https://meta.discourse.org/t/search-results-should-prioritize-first-post-in-topic-when-title-matches-search-term/175154/9 "2021-01-12T20:36:19Z")

</div>

> [@seanblue](#):
>
> 솔직히 첫 번째 게시물이(제목 일치로) 모든 것보다 우선시되는 한 나머지는 크게 신경 쓰지 않지만, 당신이 말하는 내용은 나에게도 합리적으로 들린다

@tgxworld 와 @sam, 이건 정말 변경되어야 합니다. 여기서는 '3의 규칙’을 훨씬 벗어나고 있습니다. 제목 일치는 랭킹에서 **거대한 초신성 블랙홀** 수준의 가중치를 가져야 합니다.

---

<div class="post-metadata">

### Author: ![tgxworld](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/tgxworld/32/106117_2.png) [@tgxworld](https://meta.discourse.org/u/tgxworld)
#### Post date: [1월 18, 2021, 2:16오전 UTC](https://meta.discourse.org/t/search-results-should-prioritize-first-post-in-topic-when-title-matches-search-term/175154/10 "2021-01-18T02:16:29Z")

</div>

> [@sam](#):
>
> 네, 이 문제에 대해 긴 논의가 있었지만, 전반적으로 제 선호는 검색이 매우 단순하게 동작하고, 랭킹과 관계없이 해당 토픽의 첫 번째 일치 항목을 항상 우선시하는 것입니다. 이렇게 하면 사람들에게 설명하기가 훨씬 쉽습니다. 랭킹은 매우 자의적이고 마법처럼 느껴지기 때문입니다.

> [@seanblue](#):
>
> 솔직히 말해서, 첫 번째 게시글(제목 일치 기준)이 모든 것보다 우선시되는 한, 나머지는 크게 신경 쓰지 않습니다. 하지만 말씀하시는 내용은 저에게도 합리적으로 들립니다.

토픽의 첫 번째 게시글을 항상 우선시하는 것처럼 단순할 수 없다고 생각합니다. 왜냐하면 특정 검색 시나리오를 변경하면 다른 시나리오에 영향을 미치기 때문입니다. 다음 시나리오를 고려해 보세요:

1. 토픽 X와 토픽 Y 모두 주어진 검색어 "discourse"와 일치하는 게시글을 포함하고 있습니다.
2. 토픽 X의 1번 게시글과 100번 게시글이 검색어 "discourse"와 일치합니다.
3. 100번 게시글은 검색어 "discourse"에 훨씬 더 잘 맞는 내용이기 때문에 더 높은 랭킹을 받습니다.
4. 토픽 Y의 1번 게시글이 검색어 "discourse"와 일치합니다.
5. 토픽 Y의 1번 게시글은 검색어 "discourse"에 더 관련성이 높은 내용이기 때문에 토픽 X의 1번 게시글보다 높은 랭킹을 받습니다.

기존 방식에서는 토픽 X의 100번 게시글의 랭킹을 가져와서 토픽 Y의 1번 게시글과 비교하여 랭킹을 매겼습니다. 이 경우, 토픽 Y의 1번 게시글이 검색어에 명확히 더 잘 맞음에도 불구하고, 토픽 X의 1번 게시글이 검색 결과에서 토픽 Y의 1번 게시글보다 위에 표시됩니다. 이는 토픽 내 게시글 중 가장 높은 랭킹을 가진 게시글을 기준으로 토픽을 랭킹하는 것과 동일합니다.

단순히 검색어와 일치하는 토픽의 첫 번째 게시글만 가져온다면, 더 잘 맞는 내용이지만 토픽 내에서 게시글 번호가 더 큰 게시글들이 제외됩니다. 이는 왜 이 게시글이 검색 결과에 포함되지 않았는지에 대한 의문을 불러일으킵니다.

제가 여기에서 제안된 사항에 대해 가장 이의를 제기하는 부분은, 기본적으로 검색이 게시글을 대상으로 하므로 사용자가 실제로 검색하는 것은 게시글의 본문이며 제목이 아니라는 점입니다. 제목은 검색할 올바른 게시글을 찾기 위해 모든 토픽을 필터링하는 데 도움이 줄 뿐입니다.

> [@codinghorror](#):
>
> 제목 일치는 랭킹에서 **거대한 초신성 블랙홀** 수준의 가중치를 가져야 합니다.

실제로 우리는 제목 일치에 더 높은 가중치를 부여하고 있습니다. 유일한 문제는 제목이 해당 토픽의 모든 게시글에 대한 검색 데이터의 일부이므로, 모든 게시글이 제목 일치에 대해 동일한 가중치의 혜택을 받고 있다는 점입니다.

---

<div class="post-metadata">

### Author: ![seanblue](https://avatars.discourse-cdn.com/v4/letter/s/dc4da7/32.png) [@seanblue](https://meta.discourse.org/u/seanblue)
#### Post date: [1월 18, 2021, 4:22오전 UTC](https://meta.discourse.org/t/search-results-should-prioritize-first-post-in-topic-when-title-matches-search-term/175154/11 "2021-01-18T04:22:27Z")

</div>

> [@tgxworld](#):
>
> 이것은 주제 내 게시글 중 가장 높은 순위를 가진 게시글의 순위를 기준으로 주제를 랭킹하는 것과 같습니다.

하지만 아무도 이렇게 제안하고 있지 않다고 생각합니다. 우리가 말한 것은 제목 일치 항목을 더 높은 순위에 배치하라는 것이지, 방금 설명하신 시나리오가 아닙니다. 제목이 검색어와 일치할 경우, 주제 내 모든 게시글이 아니라 특히 첫 번째 게시글의 순위를 높여야 합니다.

> [@tgxworld](#):
>
> 제가 여기서 제안된 내용에 대해 가장 큰 이의를 제기하는 이유는, 검색이 기본적으로 게시글을 검색 대상으로 하기 때문에 사용자가 실제로 찾는 것은 제목이 아니라 게시글 본문이라는 점입니다.

이 평가에는 동의하지 않습니다. 사용자는 특정 게시글을 찾는 데 관심이 있는 것이 아니라, _콘텐츠_를 찾는 데 관심이 있습니다. 주제가 적절하게 명명되어 있다면, 제목은 사용자가 원하는 내용을 나타내는 가장 좋은 지표가 되는 경우가 많으며, 대부분의 경우 이는 첫 번째 게시글부터 시작하는 것을 의미합니다.

제가 사용하는 커뮤니티의 경우를 들어 보면, 특정 하위 카테고리에는 다른 사용자가 도움을 요청할 때 해당 주제를 공유하기 위해 자주 검색되는 주제들이 있습니다. 검색 결과에서 첫 번째 게시글 대신 주제 내의 무작위 게시글이 표시되면, 잘못된 게시글이 공유되는 일이 발생했고, 이로 인해 사용자들이 최대한 빨리 도움을 받지 못하는 상황이 생겼습니다.

공유를 위한 것이든 개인적인 용도든, 사용자가 동일한 주제를 반복적으로 검색하는 경우가 얼마나 빈번한지 과소평가하고 있다고 생각합니다. 그리고 그런 경우, 압도적으로 많은 비율에서 사용자는 첫 번째 게시글을 원하거나, 이전에 멈췄던 곳부터 이어서 보기를 원합니다.

---

<div class="post-metadata">

### Author: ![tgxworld](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/tgxworld/32/106117_2.png) [@tgxworld](https://meta.discourse.org/u/tgxworld)
#### Post date: [1월 18, 2021, 4:47오전 UTC](https://meta.discourse.org/t/search-results-should-prioritize-first-post-in-topic-when-title-matches-search-term/175154/12 "2021-01-18T04:47:40Z")

</div>

> [@seanblue](#):
>
> 하지만 아무도 이렇게 제안하고 있지는 않다고 생각합니다. 우리가 말한 것은 제목이 일치하는 경우 해당 제목 매칭을 더 높은 순위로 올리는 것이지, 방금 설명하신 시나리오가 아닙니다. 제목이 검색어와 일치할 때는 주제 내 모든 게시글이 아니라 첫 번째 게시글의 순위만 특히 높여야 합니다.

제가 설명한 시나리오는 Discourse의 검색이 과거에 작동하던 방식이며, 이는 잘못된 동작입니다.

> [@tgxworld](#):
>
> 기본적으로 검색은 게시글을 대상으로 하므로, 사용자가 실제로 검색하는 것은 제목이 아니라 게시글 본문입니다.

이 표현은 잘못된 것 같습니다. 기본적으로 검색은 주제 제목과 게시글 본문의 조합을 대상으로 합니다.

> [@seanblue](#):
>
> 제목은 사용자가 원하는 것이 무엇인지를 나타내는 가장 좋은 지표이며, 대부분의 경우 이는 첫 번째 게시글부터 시작해야 함을 의미합니다.

이것이 사실일 수 있지만, 항상 그런 것은 아닙니다. 이는 검색어가 항상 주제 제목과 일치할 것이라고 가정하기 때문입니다. 코딩 포럼에서는 제목에 나타나지 않는 코드 스니펫을 검색하는 경우가 있습니다.

제안된 사항은 불가능하지는 않지만, 우리가 내려야 할 몇 가지 기술적 결정과 트레이드오프가 있습니다. 예를 들어, 첫 번째 게시글이 아닌 게시글의 경우 `PostSearchData`에서 주제 제목을 제거해야 합니다. 이렇게 하면 주제 제목이 일치할 때 첫 번째 게시글이 주제 내 다른 게시글보다 높은 순위를 차지하도록 보장할 수 있지만, 여전히 Postgres 랭킹 알고리즘의 영향을 받을 수밖에 없습니다.

---

<div class="post-metadata">

### Author: ![seanblue](https://avatars.discourse-cdn.com/v4/letter/s/dc4da7/32.png) [@seanblue](https://meta.discourse.org/u/seanblue)
#### Post date: [1월 18, 2021, 7:34오후 UTC](https://meta.discourse.org/t/search-results-should-prioritize-first-post-in-topic-when-title-matches-search-term/175154/13 "2021-01-18T19:34:51Z")

</div>

제 사용 사례를 보여줄 또 다른 예를 들어 보겠습니다. [https://community.wanikani.com에서](https://community.wanikani.xn--com-k94n91q) "special kanji"를 검색하여 이 주제인 [https://community.wanikani.com/t/special-kanji-words-derived-from-other-words/35655을](https://community.wanikani.com/t/special-kanji-words-derived-from-other-words/35655%EC%9D%84) 찾으려 했습니다. 첫 번째 게시글은 위키로, 그 안에 있는 데이터 테이블을 보고 싶었습니다. 보시는 것처럼, 제 검색어는 주제 제목의 시작 부분과 정확히 일치합니다. 그러나 첫 번째 게시글에는 실제로 "special"이라는 단어가 포함되어 있지 않아, "special"과 "kanji"라는 단어가 게시글 어딘가에 포함되어 있다는 이유만으로 [다른 게시글](https://community.wanikani.com/t/special-kanji-words-derived-from-other-words/35655/102?u=seanblue)이 우선순위로 표시되었습니다.

이런 추가 예시를 드는 것이 도움이 되길 바랍니다.

---

<div class="post-metadata">

### Author: ![tgxworld](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/tgxworld/32/106117_2.png) [@tgxworld](https://meta.discourse.org/u/tgxworld)
#### Post date: [1월 19, 2021, 1:41오전 UTC](https://meta.discourse.org/t/search-results-should-prioritize-first-post-in-topic-when-title-matches-search-term/175154/14 "2021-01-19T01:41:45Z")

</div>

> [@seanblue](#):
>
> 단순히 "special"과 "한자(kanji)"라는 단어가 게시물의 어딘가에 포함되어 있었기 때문입니다.

@sam 이 문제에 대해 어떻게 생각하시는지 궁금합니다. 검색이 올바르게 랭킹되는 이유는 "post somewhere"라는 게시물이 제목과 본문 모두에 검색어가 포함되어 있는 반면, 첫 번째 게시물은 제목에만 검색어가 포함되어 있기 때문입니다. 첫 번째 게시물을 표시하고 싶은데, 실제로는 훨씬 더 적합한 다른 게시물이 있는 경우를 보여주는 것이 직관에 반하는 것처럼 보입니다. 제가 파악한 바로는, 고려해 볼 수 있는 몇 가지 옵션이 있습니다:

1. 기존 동작으로 되돌리기. 특정 검색어에 해당하는 게시물이 주제 내에서 여러 개일 경우, 항상 가장 작은 게시물 번호를 가진 게시물을 선택합니다. 여기의 단점은 가장 작은 게시물 번호가 항상 첫 번째 게시물일 필요가 없다는 점이며, 그렇게 되면 검색 결과가 나빠질 수 있습니다. 또한, 주제 내에서 더 작은 게시물 번호를 가진 다른 게시물이 검색어에 일치하기 때문에, 본문이 명백히 훨씬 더 적합한 게시물이 제외되는 경우도 있습니다.

2. UX 측면에서 이 문제를 해결할 수 있는지 궁금합니다. 게시물로 이동하는 단일 링크만 있는 대신, 검색 결과의 제목은 항상 제목의 첫 번째 게시물로 이동하도록 하고, 검색 발췌문은 검색 결과에서 랭킹된 게시물로 링크되도록 하는 것입니다.

3. 첫 번째 게시물이 아닌 게시물의 `PostSearchData`에서 주제 제목 정보를 제외합니다. 이것을 조금 실험해 봐야겠지만, 검색 결과가 첫 번째 게시물을 반환하도록 크게 기울어질 것으로 예상합니다.

검색 결과를 정확히 유지하면서, 무엇을 검색하는지 아는 사용자에게 검색 결과에서 첫 번째 게시물로 이동할 수 있는 방법을 제공하기 때문에 옵션 2를 시도해 보는 쪽으로 약간 기울어 있습니다.

---

<div class="post-metadata">

### Author: ![Sailsman63](https://avatars.discourse-cdn.com/v4/letter/s/b5ac83/32.png) [@Sailsman63](https://meta.discourse.org/u/Sailsman63)
#### Post date: [1월 19, 2021, 1:56오전 UTC](https://meta.discourse.org/t/search-results-should-prioritize-first-post-in-topic-when-title-matches-search-term/175154/15 "2021-01-19T01:56:18Z")

</div>

> [@tgxworld](#):
>
> 검색 결과의 제목은 항상 제목에 있는 첫 번째 게시물로 이동하지만, 검색 발췌문은 검색 결과에서 랭킹된 게시물로 링크됩니다.

개인적으로 정말 불편하게 느껴집니다. 사용자가 마우스를 올렸을 때 링크로 이동하는 데이터를 읽고 해석하는 습관이 있지 않는 한, 이는 직관적이지 않습니다.

* * *

2단계 검색을 고려해 보시는 건 어떨까요?

- 주제 제목 검색: `EXACT_MATCH`와 `CONTAINS_ALL`에 대해서만 매칭
  - 이 항목들은 결과 상단에 배치되며, `EXACT_MATCH`가 우선순위를 가집니다.

- 그런 다음, 현재 가중치 기반 검색을 사용하여 나머지 결과를 채우되, 1단계에서 이미 포착된 주제 시작 게시물은 _제외_합니다.

---

<div class="post-metadata">

### Author: ![tgxworld](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/tgxworld/32/106117_2.png) [@tgxworld](https://meta.discourse.org/u/tgxworld)
#### Post date: [1월 19, 2021, 2:18오전 UTC](https://meta.discourse.org/t/search-results-should-prioritize-first-post-in-topic-when-title-matches-search-term/175154/16 "2021-01-19T02:18:46Z")

</div>

> [@Sailsman63](#):
>
> 이 부분은 직관적이지 않습니다.

이 아이디어는 UX를 변경하여 이를 명확하게 보이게 하자는 것입니다.

> [@Sailsman63](#):
>
> 2단계 검색을 고려해 보는 것은 어떨까요?
> 
> - 주제 제목 검색: `EXACT_MATCH`와 `CONTAINS_ALL`으로만 매칭
> - 이 결과들은 검색 결과 상단에 배치되며, `EXACT_MATCH`가 우선순위를 가집니다.
> 
> - 그 후, 현재 가중치 검색을 사용하여 나머지 결과를 채우되, 1단계에서 이미 매칭된 주제 시작 게시글은 _제외_합니다.

아이디어 자체는 타당하지만, `like`와 `ilike` 연산자를 사용하여 매칭을 시도할 때 인덱스 지원이 없어 Postgres 검색 쿼리를 효율적으로 실행할 수 없다고 생각합니다. 또한, 정확히 일치하는 항목이나 포함되는 항목을 랭킹하는 방법이 없습니다. 이것이 Postgres가 제공하는 전문(full-text) 검색 기능에 의존하는 이유입니다.

---

<div class="post-metadata">

### Author: ![seanblue](https://avatars.discourse-cdn.com/v4/letter/s/dc4da7/32.png) [@seanblue](https://meta.discourse.org/u/seanblue)
#### Post date: [1월 19, 2021, 2:29오전 UTC](https://meta.discourse.org/t/search-results-should-prioritize-first-post-in-topic-when-title-matches-search-term/175154/17 "2021-01-19T02:29:39Z")

</div>

> [@tgxworld](#):
>
> UX 측면에서 이 문제를 해결할 수 있을지 궁금합니다. 게시글로 연결되는 단일 링크만 있는 대신, 검색 결과의 제목은 항상 해당 제목의 첫 번째 게시글로 연결되고, 검색 요약은 검색 결과에서 순위가 매겨진 게시글로 연결되도록 하는 방식이 어떨까요?

첫 번째 게시글 링크와 일치하는 게시글 링크를 더 명확하게 구분하는 방법이 필요할 것 같습니다. 제안하신 방식이 직관적이지는 않을 것 같네요. (단순히 예시였다는 점은 이해합니다.)

제가 생각해 본 가능성 중 하나는, 확장/축소 메커니즘을 사용하여 주제 내의 모든 일치하는 게시글을 표시하는 것입니다. 현재 뷰와 유사하게 모든 일치하는 주제에서 가장 잘 일치하는 게시글을 표시하되, 각 일치하는 주제 옆에 화살표나 유사한 요소를 배치하여 목록을 확장하면 해당 주제 내의 모든 일치하는 게시글을 볼 수 있도록 하는 것입니다. 다소 과할 수도 있지만, 잘 모르겠습니다.

> [@Sailsman63](#):
>
> 2단계 검색을 고려해 볼까요?
> 
> - 주제 제목을 검색하며, `EXACT_MATCH`와 `CONTAINS_ALL`만 일치하도록 합니다.
> - 이 항목들은 결과의 상단에 배치되며, `EXACT_MATCH`가 우선순위를 갖습니다.
> 
> - 그런 다음, 현재 가중치 검색을 사용하여 나머지 결과를 채우되, 첫 번째 단계에서 포착된 주제 시작 게시글은 _제외_합니다.

이것은 분명히 시도해 볼 가치가 있다고 생각합니다. 제목 일치 항목을 우선시함으로써 제가 계속 지적해 온 문제를 해결할 수 있을 것입니다. 또한 @tgxworld 님이 언급하신 코딩 포럼 시나리오도 해결할 수 있을 것입니다. 말씀하신 대로 코드 스니펫은 제목에 포함되지 않으므로요.

> [@tgxworld](#):
>
> 아이디어는 훌륭하지만, `like`와 `ilike` 연산자를 사용하여 일치시킬 때 인덱스 지원이 없으므로 Postgres 검색 쿼리를 효율적으로 실행할 수 없다고 생각합니다.

물론, 실현 불가능하다면 다른 이야기가 되겠죠. 누군가가 이를 충분히 성능 좋게 만드는 방법을 알고 있을지도 모릅니다.

> [@tgxworld](#):
>
> 고려해야 할 또 다른 요인은 정확히 일치하거나 포함하는 항목을 순위 매길 수 없다는 점입니다. 이것이 Postgres가 제공하는 전문(full text) 검색 기능에 의존하는 이유입니다.

기존 기술을 의존하는 것은 좋지만, 사용 사례를 적절히 해결할 때만 그렇습니다. 이 주제에서 제기된 문제들을 고려할 때, Postgres의 전문 검색만으로는 부족해 보입니다. @Sailsman63 님이 제안한 것과 같은 하이브리드 접근 방식이 이상적일 것 같지만, 실현 가능한 방법이 있다면요.

> [@tgxworld](#):
>
> 기존 동작으로 되돌리기.

현재 "쉬운 답"이 없는 것 같으므로, 더 완전한 솔루션이 개발되는 동안 이것이 최선의 선택이라고 솔직히 생각합니다. UX 변경이나 데이터베이스 최적화 또는 기타 성능 고려 사항이 필요한 새로운 알고리즘을 올바르게 구현하는 데 시간이 걸릴 수 있으므로, 임시 조치로 기존 동작으로 되돌리는 것이 합리적이라고 생각합니다.

---

<div class="post-metadata">

### Author: ![tgxworld](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/tgxworld/32/106117_2.png) [@tgxworld](https://meta.discourse.org/u/tgxworld)
#### Post date: [1월 19, 2021, 2:39오전 UTC](https://meta.discourse.org/t/search-results-should-prioritize-first-post-in-topic-when-title-matches-search-term/175154/18 "2021-01-19T02:39:46Z")

</div>

> [@seanblue](#):
>
> 기존 기술에 의존하는 것은 좋지만, 사용 사례를 적절히 해결할 때만 그렇습니다. 이 주제에서 언급된 문제들을 고려할 때, Postgres의 전체 텍스트 검색만으로는 부족해 보입니다.

불행히도, 우리에게 더 나은 것으로 전환하겠다고 말하는 것만큼 간단하지 않습니다. 우리 스스로 결정을 내리기 전에 비즈니스와 기술적 관점 모두에서 고려해야 할 트레이드오프가 있습니다.

> [@seanblue](#):
>
> 그래서 저는 임시 조치로 기존 동작으로 되돌리는 것이 합리적이라고 생각합니다.

그렇게 하는 것에 대해 주저하는 이유는, 그것이 더 나은 솔루션으로 우리를 전진시키지 않기 때문입니다. 사실, 저는 기존 동작이 잘못된 것이라고 강력히 느끼고 있습니다. 이 주제에서 설명된 사례들은 검색하는 사용자가 검색하려는 주제를 정확히 알고 있기 때문에 검색 결과가 첫 번째 게시물로 링크되는 것이 직관적으로 느껴지는 단일 사례에 기반하고 있습니다. 검색하려는 주제 제목을 이미 알고 있는 사용자는 `in:title` 고급 검색 필터를 사용해야 한다고까지 주장하겠습니다. 대부분의 검색 사례에서는 게시물의 내용이 매우 중요하며, 주제 제목의 부분 일치만으로는 해당 주제의 첫 번째 게시물이 표시되어야 한다는 의미는 아닙니다.

---

<div class="post-metadata">

### Author: ![seanblue](https://avatars.discourse-cdn.com/v4/letter/s/dc4da7/32.png) [@seanblue](https://meta.discourse.org/u/seanblue)
#### Post date: [1월 19, 2021, 3:56오전 UTC](https://meta.discourse.org/t/search-results-should-prioritize-first-post-in-topic-when-title-matches-search-term/175154/19 "2021-01-19T03:56:00Z")

</div>

> [@tgxworld](#):
>
> 이 주제에서 설명된 사례들은 단일 사례에 기반하고 있습니다.

네, 맞는 말씀인 것 같습니다.

> [@tgxworld](#):
>
> 검색하려는 주제 제목을 이미 알고 있는 사용자는 `in:title` 고급 검색 필터를 사용해야 한다고 주장할 정도입니다.

고급 검색이 더 단순하다면 그것이 충분할지도 모르겠습니다. 개인적으로는 옵션이 너무 많아서 필요한 옵션을 찾기 어려워 매우 사용하기 어렵다고 느낍니다. 아마도 제 개인적인 의견일 뿐일 겁니다. 🤷‍♂️

`in:title` 체크박스를 항상 표시되도록 하는 것이 적절할 수도 있습니다. 아니면 더 나은 방법으로, 입력창 왼쪽에 ‘모두’, ‘제목’, '게시물’과 같은 옵션이 있는 드롭다운 메뉴를 제공하여 사용자가 검색 범위를 지정할 수 있게 하는 것이 합리적일 것입니다. 이러한 유형의 검색 필터는 꽤 일반적이라고 생각하므로, 사용자들이 직관적으로 사용하거나 무시할 수 있을 것입니다. 비교 대상으로, IMDb에서는 ‘모두’, ‘제목’, ‘배우’ 등으로 검색할 수 있습니다. (정확한 옵션은 기억이 나지 않습니다.) 현재 '모두’와 '게시물’은 사실상 동일한 개념이므로 이 둘을 어떻게 구분할지 생각해봐야 하지만, 아마도 이 접근 방식을 고려해볼 가치가 있을 것입니다.

---

<div class="post-metadata">

### Author: ![codinghorror](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/codinghorror/32/110067_2.png) [@codinghorror](https://meta.discourse.org/u/codinghorror)
#### Post date: [1월 19, 2021, 5:52오전 UTC](https://meta.discourse.org/t/search-results-should-prioritize-first-post-in-topic-when-title-matches-search-term/175154/20 "2021-01-19T05:52:29Z")

</div>

> [@tgxworld](#):
>
> 첫 번째 게시물이 아닌 게시물의 `PostSearchData`에서 주제 제목 정보를 제외해야 합니다. 이에 대해 조금 실험을 해봐야겠지만, 검색 결과가 첫 번째 게시물로 크게 치우치게 될 것으로 예상됩니다.

우리가 취해야 할 조치가 바로 이것입니다. 주제 내의 _모든_ 게시물에 주제 제목이 연관되어 있다는 것은 전혀 이해가 되지 않습니다.

---

<div class="post-metadata">

### Author: ![tgxworld](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/tgxworld/32/106117_2.png) [@tgxworld](https://meta.discourse.org/u/tgxworld)
#### Post date: [1월 19, 2021, 6:02오전 UTC](https://meta.discourse.org/t/search-results-should-prioritize-first-post-in-topic-when-title-matches-search-term/175154/21 "2021-01-19T06:02:57Z")

</div>

@sam과 이 부분에 대해 확인이 필요합니다. 지금까지 검색 인덱스는 항상 이렇게 구축되어 왔기 때문입니다. 실제로 각 게시물의 검색 인덱스에는 제목, 카테고리 이름, 태그 이름이 포함되며, 해당 게시물이 첫 번째 게시물이 아니더라도 마찬가지입니다.

[Next page](https://meta.discourse.org/t/search-results-should-prioritize-first-post-in-topic-when-title-matches-search-term/175154.md?page=2)
