【问题标题】:Does the App Engine Search Api allow for partial and misspelled matchingApp Engine Search Api 是否允许部分匹配和拼写错误匹配
【发布时间】:2015-03-26 19:10:52
【问题描述】:

我的论坛使用 Google App Engine Search Api。所以我很自然地希望能够找到部分和拼写错误的单词。但是 api 并没有这样做。有谁知道这个 api 的变通方法或更好的替代方法?

对于部分匹配,我可以想象将论坛评论中的每个单词炸成一组子字符串。但这似乎相当昂贵。试想一下:如果评论有 60 个字(比如总共 500 个字符),那么保存单个论坛帖子会在文档中增加一个巨大的文本字段

Document.Builder builder = Document.newBuilder(); 
builder.addField(Field.newBuilder().setName(“comment”).setText(comment))

这是相当荒谬的,尤其是正则表达式匹配器会更经济。这引出了一个问题:为什么查询不使用正则表达式匹配以便可以找到部分单词?至于拼写错误,有很多算法可以做到这一点,为什么 App 引擎 Seach api 不提供呢?

当然,我现在在这里发布此内容,希望我错了,有人会告诉我 Search Api 确实提供了所有这些功能。我一直在网上浏览很多教程,到目前为止还没有。那么问题又来了:App Engine Search Api 是否允许partial text matchingmisspelled text matching?如果没有,我该如何破解它?

【问题讨论】:

    标签: java regex google-app-engine google-search-api misspelling


    【解决方案1】:

    搜索 API目前支持部分文本匹配。但是有很多像this one 这样的项目。提供在 GAE 上安装 Lucene/Compass 的方法。哪些能够完全满足您的需求。

    【讨论】:

    • 谢谢。我要调查一下。 +1
    • 在接受这个答案并告诉大家这是答案之前,我一直在尝试让代码与我的项目一起编译。不幸的是,我没有任何运气。所以我创建了一个新线程:stackoverflow.com/questions/29305483/…。我仍在努力解决这个问题,一旦我这样做了,我会将这个问题标记为已接受。谢谢。
    【解决方案2】:

    您可以使用词干提取功能来查询单词变体:

    https://cloud.google.com/appengine/docs/java/search/query_strings#Java_Stemming

    要搜索单词的常见变体,例如复数形式和动词结尾,请使用 ~ 词干运算符(波浪号字符)。这是一个前缀运算符,它必须在一个没有中间空格的值之前。值 ~cat 将匹配 "cat" 或 "cats",同样 ~dog 匹配 "dog" 或 "dogs"。词干算法并非万无一失。值 ~care 将匹配“care”和“caring”,但不匹配“cares”或“cared”。词干仅在搜索文本和 HTML 字段时使用。

    【讨论】:

      猜你喜欢
      • 2019-12-03
      • 1970-01-01
      • 2015-06-30
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-12-12
      • 1970-01-01
      • 2019-03-16
      相关资源
      最近更新 更多