私は現在、AppEngine プロジェクトに取り組んでおり、検索用語のオートコンプリートを実装したいと考えています。検索できる項目はかなり明確で短いので、各項目に不完全な型付けのリストを与えることで実装することを考えていました。foobar
のようなリストが得られます[f, fo, foo, foob, fooba, foobar]
。次に、検索ボックス内のユーザーのテキストがこのリストと比較され、一致するものが提案されます。
このリストには、私が考えていたいくつかの可能な最適化があります。
- 検索語からスペース句読点を削除します。
Foo. Bar
にFooBar
。 - 大文字の削除
- 「the」、「a」、「an」などの先行助詞を削除します。となり、 として索引付けされ
The Guy
ます。guy
[g, gu, guy]
- 2 つまたは 3 つより長い部分文字列のみをインデックス リストに追加します。したがって
The Guy
、 として索引付けされ[gu, guy]
ます。最初の文字だけが一致する提案はあまり関連性がないと思いました。
ユーザーの検索用語もこのようにフォーマットされ、その後 DB が検索されます。検索語を提案すると、提案されたオブジェクトのフルネームに従って助詞、句読点、および大文字が追加されます。したがって、「the」を検索しても候補は表示されませんが、「The Gu..」または「gu」を検索すると「The Guy」が表示されます。
これは良い考えですか?主に: このフォーマットは役に立ちますか、それとも問題を引き起こすだけですか?