3

私のフォーラムでは、Google App Engine Search Api を使用しています。したがって、当然、部分的なスペルミスの単語を見つけられるようにしたいと考えています。しかし、APIはそれをしません。このAPIの回避策またはより良い代替手段を知っている人はいますか?

部分一致の場合、フォーラム コメントの各単語を一連の部分文字列に分解することを想像できます。しかし、それはかなり高価なようです。考えてみてください: コメントが 60 語 (たとえば合計 500 文字) の場合、その 1 つのフォーラム投稿を保存すると、ドキュメントに巨大なテキスト フィールドが追加されます。

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

これはかなりばかげています。特に正規表現マッチャーの方がはるかに経済的です。ここで疑問が生じます: 部分的な単語を検出できるように、クエリが正規表現マッチングを使用しないのはなぜですか? スペルミスに関しては、これを行うためのアルゴリズムがいくつかありますが、App Engine Seach API がそれを提供していないのはなぜですか?

もちろん、私が間違っていて、Search Api が実際にこれらすべての機能を提供していることを誰かが教えてくれることを期待して、ここに投稿しています。私はオンラインで多くのチュートリアルを見てきましたが、これまでのところあまりありません。もう一度質問します。App Engine Search API はpartial text matchingand を許可しmisspelled text matchingますか? そうでない場合、どうすればハッキングできますか?

4

2 に答える 2

1

ステミング機能を使用して、単語のバリエーションを照会できます。

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

複数形や動詞の語尾など、単語の一般的なバリエーションを検索するには、~ 語幹演算子 (チルダ文字) を使用します。これは、間にスペースを入れずに値の前に置く必要がある接頭演算子です。値 ~cat は「cat」または「cats」に一致し、同様に ~dog は「dog」または「dogs」に一致します。ステミング アルゴリズムは絶対確実ではありません。値 ~care は、「care」および「caring」と一致しますが、「cares」または「cared」とは一致しません。ステミングは、テキストおよび HTML フィールドを検索する場合にのみ使用されます。

于 2015-03-28T21:58:49.813 に答える