Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[一覧・検索]著者名での検索あるいはフィルタリング #372

Closed
3 tasks
horimasumi opened this issue Apr 7, 2021 · 6 comments
Closed
3 tasks
Assignees
Labels
design デザインや UI/UX に関するもの enhancement 新機能実装またはリクエスト goodfirstissue 簡単なタスク

Comments

@horimasumi
Copy link

horimasumi commented Apr 7, 2021

どのような問題を解決する機能追加でしょうか?

#314#346, #370 に関連して
トピック共有,ブック共有において,誰が作ったトピックか,ブックかというのは,コンテンツを探し出す時の重要なキーワードになります.
ついては,

あなたが望む解決方法について書いてください

A.トピックやブックを著者名を検索対象とする
B.著者名をクリックしたら,それでフィルタリングできたる

のいずれが,あるいは両方を実装する.

本 issue を close する条件

本件を、終了(close)とする条件について下記から選ぶか、追記をお願いします。

  • 議論の結論がでたか? (一定期間結論がでないものは、close 対象となりうる)

  • [✓ ] コードに実装された。

  • ドキュメントに反映され、周知された。

  • 議論が outdate になってしまった。(コメントで特記し、close)

@horimasumi horimasumi added the enhancement 新機能実装またはリクエスト label Apr 7, 2021
@horimasumi horimasumi reopened this Apr 7, 2021
@kou029w
Copy link

kou029w commented Apr 23, 2021

実装方法を記します:

A.トピックやブックを著者名を検索対象とする

次のようなコードを追加

diff --git a/utils/search/bookSearch.ts b/utils/search/bookSearch.ts
index 1d63181..b7d8801 100644
--- a/utils/search/bookSearch.ts
+++ b/utils/search/bookSearch.ts
@@ -4,10 +4,12 @@ import { Query } from "./query";
 function getTextContent(book: BookSchema): string {
   let str = book.name;
 
+  if (book.author.name) str += ` ${book.author.name}`;
   for (const section of book.sections) {
     if (section.name) str += ` ${section.name}`;
     for (const topic of section.topics) {
       if (topic.name) str += ` ${topic.name}`;
+      if (topic.creator.name) str += ` ${topic.creator.name}`;
     }
   }
 
diff --git a/utils/search/topicSearch.ts b/utils/search/topicSearch.ts
index 2ba1366..1c766fa 100644
--- a/utils/search/topicSearch.ts
+++ b/utils/search/topicSearch.ts
@@ -2,7 +2,9 @@ import { TopicSchema } from "$server/models/topic";
 import { Query } from "./query";
 
 function getTextContent(topic: TopicSchema): string {
-  return topic.name.normalize("NFKD").toLowerCase();
+  let str = topic.name;
+  if (topic.creator.name) str += ` ${topic.creator.name}`;
+  return str.normalize("NFKD").toLowerCase();
 }
 
 /**

B.著者名をクリックしたら,それでフィルタリング

  1. 著者名・作成者を検索インデックスに追加 … Aに近い実装
  2. 検索クエリーの定義・パーサーの実装
  3. 一覧系の画面での著者・作成者の部分へのクリックハンドラーの注入・検索フォームへの入力

@horimasumi horimasumi added the design デザインや UI/UX に関するもの label Jun 5, 2021
@horimasumi horimasumi changed the title 著者名での検索あるいはフィルタリング [検索]著者名での検索あるいはフィルタリング Jun 6, 2021
@horimasumi horimasumi changed the title [検索]著者名での検索あるいはフィルタリング [一覧・検索]著者名での検索あるいはフィルタリング Jun 6, 2021
@kou029w kou029w added the goodfirstissue 簡単なタスク label Jul 8, 2021
@NaokiNoguchi NaokiNoguchi self-assigned this Aug 5, 2021
@NaokiNoguchi
Copy link

@horimasumi さん
お疲れ様です。
こちらA,Bの2案ありますが、どちらの案で対応するなど決まっていますでしょうか?
@kou029w さん提案のA案の実装例を実装してみて、使い勝手を試してみてもよいでしょうか?

@horimasumi
Copy link
Author

@NaokiNoguchi
まずはA案でお願いします.

@NaokiNoguchi
Copy link

@horimasumi
承知しました。まずはA案を実装してみます。

@knokmki612
Copy link

実際の見栄え的な観点なのですが、検索を行うテキストフィールドのlabelでは
ブック検索、ブック・トピック検索などとしています。

一見すると著者名での検索が可能である、ということが分かりにくいかなと思いました。
とはいえ、ブック・トピック・著者名の検索、とすると文字数が多く冗長に感じます。

この辺りご意見等ありますでしょうか?
(issueで議論の方がよいでしょうか?)

Originally posted by @NaokiNoguchi in #492 (comment)

私の意見としては、検索UIへのラベリングは、検索して画面上に列挙される対象(検索に用いられるインデックスの話ではなく)が何なのか、が明らかであればよいと考えます。

今回の場合は検索して列挙される対象がブックなのであれば「ブック検索」、列挙される対象がトピックなのであれば「トピック検索」がよいのではないかと思いました。(そうすると「ブック・トピック検索」というラベリングはブックとトピックが同列に列挙されることになり不適合…?)

一見すると著者名での検索が可能である、ということが分かりにくいかなと思いました。

B案での検索クエリ、フィルタリングの実装であれば著者名検索用の書式が存在することになりますが、A案は検索欄に入力する時点ではそのような書式を必要としないので、ユーザーが検索欄にブック名、トピック名、著者名を入力するときはどれも「検索欄に任意の文字列を入力する」という点では操作に差異はないと推測します。

この場合、自分の関心のあるキーワードで期待するブックトピックが抽出されればよいのであって、任意の文字列が何を検索対象として検索されるかは、極力意識しないで済むのが理想的かと思います。

とはいいつつも、何を検索対象としているのか何らかの方法で明らかにされていることも、親切な情報提示になるかと思います。検索対象を検索UIへのラベリング以外によって明らかにするのであれば、たとえばヘルプボタンを近くに配置し、それをクリックするとポップアップなどで検索対象に関する説明がされる、もしくは、ドキュメントへのリンクがあり、それをクリックすると検索対象についてドキュメンテーションされたページが表示される、などが考えられます。

@NaokiNoguchi
Copy link

自分の関心のあるキーワードで期待するブックトピックが抽出されればよいのであって、任意の文字列が何を検索対象として検索されるかは、極力意識しないで済むのが理想的かと思います。

確かにその考えもありますね。その場合は特に追加対応せずに現状のままで問題ないように思います。

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
design デザインや UI/UX に関するもの enhancement 新機能実装またはリクエスト goodfirstissue 簡単なタスク
Projects
None yet
Development

No branches or pull requests

5 participants