# 通配符搜索

**URL:** https://meta.discourse.org/t/wildcard-search/131697
**Category:** Feature
**Tags:** search
**Created:** [2019年十月23日 07:30 UTC](https://meta.discourse.org/t/wildcard-search/131697 "2019-10-23T07:30:45Z")
**Posts on this page:** 6
**Page:** 1

<div class="post-metadata">

### Author: ![user2](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/user2/32/135592_2.png) [@user2](https://meta.discourse.org/u/user2)
#### Post date: [2019年十月23日 07:30 UTC](https://meta.discourse.org/t/wildcard-search/131697/1 "2019-10-23T07:30:46Z")

</div>

你好，

有没有什么（简单的）方法可以在我的 Discourse 上实现通配符搜索功能？

我在公司内部本地运行一个小型的封闭 Discourse 论坛。用户只有大约 10 人，所以帖子数量远不如大型社区那么多。

我看到了这个 [Algolia](https://meta.discourse.org/t/add-algolia-search-to-your-discourse/73517) 插件，它看起来非常完美，但问题是它需要对论坛进行索引，而我们无法让数据离开本地网络。

我希望在搜索“322X”时能找到像“DE322X”这样的内容 🙂

---

<div class="post-metadata">

### Author: ![rishabh](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/rishabh/32/179446_2.png) [@rishabh](https://meta.discourse.org/u/rishabh)
#### Post date: [2019年十月23日 07:47 UTC](https://meta.discourse.org/t/wildcard-search/131697/2 "2019-10-23T07:47:41Z")

</div>

使用我们的 [https://meta.discourse.org/t/data-explorer-plugin/32566，可能有几种方法可以实现。](https://meta.discourse.org/t/data-explorer-plugin/32566%EF%BC%8C%E5%8F%AF%E8%83%BD%E6%9C%89%E5%87%A0%E7%A7%8D%E6%96%B9%E6%B3%95%E5%8F%AF%E4%BB%A5%E5%AE%9E%E7%8E%B0%E3%80%82)

- 您可以运行这个简单的查询，然后点击 CSV 按钮下载所有帖子。之后，您可以在另一个程序中搜索导出的文件。

- 您也可以编写一个自定义的数据探索器查询，以在所有帖子内容中搜索关键词。

> [@user2](#):
>
> 我们不能让这些数据离开本地网络。

在这里使用数据探索器可以确保您的数据不会离开本地网络。

---

<div class="post-metadata">

### Author: ![user2](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/user2/32/135592_2.png) [@user2](https://meta.discourse.org/u/user2)
#### Post date: [2019年十月23日 08:10 UTC](https://meta.discourse.org/t/wildcard-search/131697/3 "2019-10-23T08:10:18Z")

</div>

谢谢，我会先保存起来。以后可能会派上用场 🙂  
不过，这需要整个团队都能进行搜索，如果每次找东西时大家都得导出一个 CSV 文件，那可就太麻烦了 😕

---

<div class="post-metadata">

### Author: ![rishabh](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/rishabh/32/179446_2.png) [@rishabh](https://meta.discourse.org/u/rishabh)
#### Post date: [2019年十月23日 08:11 UTC](https://meta.discourse.org/t/wildcard-search/131697/4 "2019-10-23T08:11:46Z")

</div>

好的，那么编写自定义查询并在 UI 中查看结果就是最佳方案。请访问 [(Superseded) What cool data explorer queries have you come up with?](https://meta.discourse.org/t/what-cool-data-explorer-queries-have-you-come-up-with/43516/) 获取编写查询的灵感。

---

<div class="post-metadata">

### Author: ![system](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/system/32/443519_2.png) [@system](https://meta.discourse.org/u/system)
#### Post date: [2023年七月3日 06:20 UTC](https://meta.discourse.org/t/wildcard-search/131697/5 "2023-07-03T06:20:07Z")

</div>



---

<div class="post-metadata">

### Author: ![JammyDodger](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/jammydodger/32/254611_2.png) [@JammyDodger](https://meta.discourse.org/u/JammyDodger)
#### Post date: [2023年七月3日 15:16 UTC](https://meta.discourse.org/t/wildcard-search/131697/6 "2023-07-03T15:16:17Z")

</div>

对于足够小的站点，类似这样的方案或许可行：

```sql
-- [params]
-- string :query

SELECT p.id AS post_id, 
       p.user_id
FROM posts p
WHERE p.raw ~* :query
  AND p.deleted_at IS NULL

```

不过，如果您希望进一步限制范围，或许可以添加特定的分类或日期范围。

编写完成后，您可以将其设置为对特定用户组可用：

 ![query available to groups](https://global.discourse-cdn.com/meta/original/4X/f/b/5/fb55b3f4441070f41ccaa9d03f777b9821831d08.png)

* * *

不过，我理解从搜索栏直接实现才是原帖作者最理想的需求。🙂 我会将此建议转至 #Contribute > Feature 频道，以防有更多人对这一功能感兴趣。
