如何在 sphinx 搜索中处理单词形式

发布于 2024-11-13 05:04:11 字数 238 浏览 3 评论 0原文

我有一个 sphinx 服务器来为 django 应用程序索引 mysql 数据库。我的搜索工作正常,但我的内容包括医学单词/短语。因此,例如,我需要搜索“dvt”来匹配“深静脉血栓”甚至“深静脉血栓”。我浏览了文档,看到了“词形”和“形态”的选项。我应该使用其中哪一个(或其他东西)?另外,什么会向后起作用?即,搜索“深静脉血栓”/“深静脉血栓”将与“dvt”匹配。

另外,我希望得到一些关于如何设置这些的建议,因为我总体上是狮身人面像的新手。

I have a sphinx server to index a mysql database for a django app. My search is working fine but my content includes medical words/phrases. So, for example, I need a search for "dvt" to also match against "deep venous thrombosis" and even "deep vein thrombosis". I looked through the documentation and see an option for "wordforms" and "morphology". Which of these (or something else) should I use? Also, what will work backwards? ie, a search for "deep venous thrombosis"/"deep vein thrombosis" will match against "dvt".

Also, I would appreciate some advice on how to set these up since I'm new to sphinx in general.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

你如我软肋 2024-11-20 05:04:11

您需要提供自己的单词/术语同义词列表,以用于查询扩展。

由于 Sphinx 目前不支持查询中的同义词扩展,因此您需要在将查询提交到搜索引擎之前根据同义词列表对查询进行处理。

因此,使用您的示例:

  • 用户查询:“dvt 补救程序”。

  • 服务器接收查询并根据其同义词列表检查每个术语。

  • 服务器找到匹配项并添加“深静脉血栓”进行查询。

  • 服务器向搜索引擎提交新扩展的查询“dvt 深静脉血栓形成补救程序”。

最后,如果 Sphinx 中内置的词干分析器正在完成其工作,则您不必同时支持“静脉”和“静脉”作为单独的术语,因为它们都应源于同一个术语。如果情况并非如此,您可能需要进行额外的预词干处理来处理特定于您的语料库的单词(医学术语)。

You will need to provide your own list of word/term synonyms to be used in query expansion.

Since Sphinx does not currently support synonym expansion in queries, you'll need to massage the query based on your list of synonyms before submitting it to the search engine.

So, using your example:

  • User queries for: 'dvt remediation procedures'.

  • Server receives query and checks each term against its list of synonyms.

  • Server finds a match and adds 'deep vein thrombosis' to query.

  • Server submits newly expanded query 'dvt deep vein thrombosis remediation procedures' to search engine.

Finally, if the stemmer built into Sphinx is doing its job, you shouldn't have to support both 'venous' and 'vein' as separate terms since they both should stem to the same term. If this is not the case, you might need to do additional pre-stemming to handle words specific to your corpora (medical terms).

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文