App Engine搜索Api是否允许部分和拼写错误的匹配

时间:2015-03-26 19:10:52

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

我的论坛使用Google App Engine搜索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搜索Api是否允许partial text matchingmisspelled text matching?如果没有,我怎么能破解它?

2 个答案:

答案 0 :(得分:2)

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

答案 1 :(得分:1)

您可以使用词干分析功能查询单词变体:

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

  

要搜索单词的常见变体,如复数形式和动词结尾,请使用~stem运算符(波形符号)。这是一个前缀运算符,它必须位于一个没有中间空格的值之前。值~cat匹配" cat"或者"猫,"同样〜狗匹配"狗"或者"狗。"词干算法不是万无一失的。值〜care将匹配" care"和"关怀,"但不是"关心"或者"关心。"词干仅在搜索文本和HTML字段时使用。