# 可搜索的用户自定义字段以及来自 ask.discourse.org 的不良建议

**URL:** <https://meta.discourse.org/t/searchable-user-custom-fields-and-bad-advice-from-ask-discourse-org/369173>\
**Category:** Support\
**Tags:** ask-discourse\
**Created:** [2025年六月6日 20:33 UTC](https://meta.discourse.org/t/searchable-user-custom-fields-and-bad-advice-from-ask-discourse-org/369173 "2025-06-06T20:33:07Z")\
**Posts on this page:** 1\
**Showing post:** 1

<div class="post-metadata">

**Author:** ![pfaffman](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/pfaffman/32/120154_2.png) [@pfaffman](https://meta.discourse.org/u/pfaffman)\
**Post date:** [2025年六月6日 20:33 UTC](https://meta.discourse.org/t/searchable-user-custom-fields-and-bad-advice-from-ask-discourse-org/369173/1 "2025-06-06T20:33:07Z")

</div>

也许这应该是两个话题，但这是一个尝试用人工智能解决特定问题的例子，我仍然想要一个答案。 🙂

我正在帮助某人，他希望能够搜索大量的用户自定义字段。我告诉他需要一个插件，但事实并非如此。你可以在用户设置中勾选“可搜索”选项（这个功能存在多久了？）：

 ![image](https://global.discourse-cdn.com/meta/original/4X/c/5/a/c5a64994fe86e9070ac2a7dbb8cf951a8065d852.png)

我甚至可以输入“/”并搜索用户自定义字段，它会进行增量搜索！

 ![The image shows a search bar with the text 'discou' being entered, suggesting a user's input within a member services or expertise system. (Captioned by AI)](https://global.discourse-cdn.com/meta/original/4X/3/b/8/3b8c69c6f986d13962f194101bd630e8b5a06355.png)

我试图解决的问题是，他们希望能够按位置搜索，而目前唯一的方法似乎是有一个用户自定义字段，其中包含地址的第二个副本，这似乎不太好。

所以我问了 [ask.discourse.org](http://ask.discourse.org)：

> [@](#):
>
> 我希望在搜索时能够搜索用户位置。现在我添加了一个自定义用户字段，并在其中放置了第二个位置；这似乎不太好。我能搜索位置吗？

[https://ask.discourse.com/discourse-ai/ai-bot/shared-ai-conversations/FOFRYdsQy6B--c0W-X6K4A](https://ask.discourse.com/discourse-ai/ai-bot/shared-ai-conversations/FOFRYdsQy6B--c0W-X6K4A)

有趣的是，我以为人工智能所说的都是真的，但几乎都不是。

搜索位置（如果它在自定义字段中）是可以做到的（通过自定义字段的技巧），但它似乎在用户目录搜索中捕捉到了这种细微差别？

“搜索栏 **没有内置方法** 来搜索用户自定义字段。” 我也是这么想的！我甚至给了他们一大笔钱来编写一个可以做到这一点的插件，然后我才发现它已经存在了。

我也推荐了数据探索器解决方案；另一个糟糕的主意。（所以我和人工智能一样愚蠢！？？？）

> [@](#):
>
> #### **解决方案：**
> 
> 1. **基本搜索：**  
> 标准的 Discourse 搜索 **不索引** 用户字段，因此搜索位置只会返回提及该位置的帖子，而不会返回用户配置文件中包含该位置的用户。
> 2. **用户目录：**  
> 如果启用了用户目录插件或页面（`/u` 或 `/directory`）并且已填写了位置字段，则可以按位置显示用户，并且可以进行筛选或排序。
> 3. **高级用户字段搜索：**  
> 搜索栏 **没有内置方法** 来搜索用户自定义字段。但是，管理员可以：
> - 导出用户数据（在管理员 \> 用户部分或通过数据探索器插件（如果已安装））。
> - 使用数据探索器编写查询来搜索用户自定义字段或位置。
> 
> 4. **插件：**
> - 一些插件（[参见 Meta 讨论](https://meta.discourse.org/t/searching-users-by-location/62923/5)）或通过数据探索器 SQL 进行的自定义脚本可以允许按位置搜索/筛选用户。
> - [改进的用户目录插件](https://meta.discourse.org/t/discourse-user-directory/19050)也可能支持更灵活的筛选。

此外，人工智能似乎经常试图为整个世界解决问题，而不是仅仅为 Discourse：

> [@](#):
>
> 听起来您正在处理一个用户拥有“位置”字段的系统，并且您希望将该字段包含在搜索结果中——可能类似于 Discourse 或类似平台。

我们能告诉它假设问题是关于 Discourse 的吗（我会在以后的提示中提醒它）。我们能告诉它永远不要推荐编写 `.hbs` 文件吗？

## 回到搜索地址的问题

我想一个简单的解决方案是创建一个插件，该插件在用户配置文件编辑时有一个回调，将位置写入用户自定义字段位置。我认为在卡片上显示它将允许搜索和显示在搜索中，然后使用 CSS 来隐藏它或用户卡片/配置文件中的实际位置字段。

---

_[View the full topic](https://meta.discourse.org/t/searchable-user-custom-fields-and-bad-advice-from-ask-discourse-org/369173)._
