0

私は現在、AppEngine プロジェクトに取り組んでおり、検索用語のオートコンプリートを実装したいと考えています。検索できる項目はかなり明確で短いので、各項目に不完全な型付けのリストを与えることで実装することを考えていました。foobarのようなリストが得られます[f, fo, foo, foob, fooba, foobar]。次に、検索ボックス内のユーザーのテキストがこのリストと比較され、一致するものが提案されます。

このリストには、私が考えていたいくつかの可能な最適化があります。

  • 検索語からスペース句読点を削除します。Foo. BarFooBar
  • 大文字の削除
  • 「the」、「a」、「an」などの先行助詞を削除します。となり、 として索引付けされThe Guyます。guy[g, gu, guy]
  • 2 つまたは 3 つより長い部分文字列のみをインデックス リストに追加します。したがってThe Guy、 として索引付けされ[gu, guy]ます。最初の文字だけが一致する提案はあまり関連性がないと思いました。

ユーザーの検索用語もこのようにフォーマットされ、その後 DB が検索されます。検索語を提案すると、提案されたオブジェクトのフルネームに従って助詞、句読点、および大文字が追加されます。したがって、「the」を検索しても候補は表示されませんが、「The Gu..」または「gu」を検索すると「The Guy」が表示されます。

これは良い考えですか?主に: このフォーマットは役に立ちますか、それとも問題を引き起こすだけですか?

4

1 に答える 1

2

私はすでに同じ問題に遭遇しており、私が採用した解決策はあなたの考えと非常に似ていました。項目を単語に分割し、小文字に変換し、アクセントを削除して、開始点のリストを作成します。たとえば、"Báz Bar"になり['b', 'ba', 'bar', 'baz']ます。

このスレッドにコードを投稿しました。このサイトの検索ボックスはそれを使用しています。よろしければお気軽にご利用ください。

于 2010-01-18T23:27:49.637 に答える