3

我的论坛使用 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 matchingand misspelled text matching?如果没有,我该如何破解它?

4

2 回答 2

2

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

于 2015-03-26T19:18:46.577 回答
1

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

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

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

于 2015-03-28T21:58:49.813 回答