【问题标题】:Stemming and partial search using MongoDB 2.4使用 MongoDB 2.4 进行词干和部分搜索
【发布时间】:2014-01-07 14:41:15
【问题描述】:

在 MongoDB 中进行全文搜索和部分搜索的正确方法是什么? 例如。挪威语“sokk”(袜子)。 搜索“sokk”时,我想匹配“sokker”(复数形式的袜子)、“sokk”和“sokkepose”

搜索“sokker”应匹配“sokk”和“sokker”。

我通过使用这个 ruby​​ sn-p 得到了想要的结果:

def self.search(q)
    result = []

    # Full text search first
    result << Ad.text_search(q).to_a   

    # Then search for parts of the word
    result << Ad.any_of({ title: /.*#{q}.*/i }, { description: /.*#{q}.*/i} ).to_a

    result.flatten!
    result.uniq
end

有什么建议吗? :)

干杯,

马丁·斯塔本费尔特

【问题讨论】:

    标签: ruby mongodb full-text-search mongoid partial


    【解决方案1】:

    马丁,

    一些建议/建议/更正:

    1. 2.4 中的全文搜索尚未准备好用于生产,不应在不了解进行权衡的情况下将其部署到生产中。您可以在 -http://docs.mongodb.org/manual/tutorial/enable-text-search/

    2. 找到更多详细信息
    3. 要使文本搜索正常工作,您需要在添加文档时为文档提供适当的语言(或 2.6 中的特定字段)。这样可以确保词的词干得到适当的提取,并从索引该字段中删除停止词。

    4. 在搜索特定字段时指定语言,以便对其进行适当的词干化并删除最重要的词,以便对结果进行适当的搜索和排名。您可以在 http://docs.mongodb.org/manual/reference/command/text/ 找到有关索引和搜索的更多详细信息。您还可以在该网页上查看 MongoDB FTS 支持的语言。

    理想情况下,您在进行全文搜索时不会使用正则表达式,而是指定您正在查找的单词/字符串以及语言。

    【讨论】:

      猜你喜欢
      • 2013-10-07
      • 1970-01-01
      • 2019-07-24
      • 1970-01-01
      • 2018-03-02
      • 1970-01-01
      • 1970-01-01
      • 2019-06-03
      • 1970-01-01
      相关资源
      最近更新 更多