2013-05-13 17 views
5

Twitters Typeaheadは、語句の任意の単語に一致します。したがって、「car」の検索では、「car」に一致する2番目の単語を含む語句から結果を得ることができます。たとえば、名刺でリスト内の車を検索する場合。名刺が現れ、さらに悪くなると車の前に現れます。 IE:Twitter Typeaheadの完全一致の単語とフレーズを作成する方法

Search Term: Car 
Suggestions: 
Business Card 
Car 
Car Pool 
Carbon 

は、私はそれが入力された単語が最も関連性がある(彼らは最初から入力され、まさに一致していない何かを示唆することはありません)のような、よりグーグルとツイッターになりたいので、車のようになりますビジネスカードよりも車を入力するときに関連性があります。

誰かがスペースを入力して2番目の単語を開始するまで、実際には2番目の単語とのマッチングを停止する必要があります。

Business C 

私は型付き検索の開始から正確に一致しない単語を照合し、示唆のこの動作をどのように停止することができます:私は、入力された場合を除きしたがって、上記の例の名刺にリストには表示されません。

これを言い替える別の方法は、トークン化またはスペース上の分割から先行入力を停止する方法です。先読みは単語の先頭から常に一致します(^)ので、スペースが単語の境界として認識されない場合、ユーザーが期待するGoogleとtwittersのようにもっと機能します。私は値を持つデータムを返し、先行入力_transformDatum方法は、上分割してトークンをトークン化しないようにトークンに私のデータセットを更新任意の助け

おかげで、 タイラー

UPDATE 1.

スペース。これは素晴らしい作品と、必要に応じて、今それが動作します:

値:アップル、大型類人猿

検索キーワード:Apを 提案:これは私が欲しいもの アップル

です。しかし今、新しい問題があります。

問題:スペースを含む検索語句を使用すると、提案は返されません。

ので

今、私は "素晴らしい" と入力したときの提案は、すぐに私はスペースを入力して停止:

検索キーワード:グレート(スペース付き) 提案: (なし)

Iトークンにスペースがないと思っています。ドキュメントが明示的問題でこれを言っていないにもかかわらず:

データムの正規の形式は、valueプロパティと トークンプロパティを持つオブジェクトです。 valueは、基になる の値を表す文字列であり、トークンは、 typeahead.jsを指定したクエリと一致させるのに役立つ文字列の集合です。

+0

https://github.com/twitter/typeahead .js/blob/master/src/dataset.js#L251)。 'toLowerCase()'をクエリに適用するだけで、 'tokenizeQuery'の呼び出しを削除しました。 – franzlorenzon

答えて

1

することはでき

$('.typeahead').typeahead({source:myarray, matcher: function(item){ 
    var reg = new RegExp('^'+this.query); 
    if(item.match(reg)) return true; 
    else return false; 
}}) 
+0

応答してくれてありがとうと申し訳ありませんが、私ははっきりしませんでしたが、これはTwitterのTypeahead.jsがブートストラップに関連付けられていないことです。私は明確にするために自分の投稿を更新しました。 –

1

がちになります:私はメソッド `getSuggestion`を(編集スペースの問題を解決してきました

matcher: function (item) { 
     if (item.toLowerCase().indexOf(this.query.trim().toLowerCase()) == 0) { 
      return true; 
     } 
    }, 
+0

あなたの答えは、twitterのブートストラップv2(ブートストラップv3には先読みがありません)で配布されている先読みに関するものです。問題は、別のプロダクトであるTwitterの先読みについてです。 – jrochkind

関連する問題