我的论坛使用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 matching
和misspelled text matching
?如果没有,我怎么能破解它?
答案 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字段时使用。