問題タブ [containstable]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
1 に答える
76 参照

search - 「5mil」検索で CONTAINSTABLE のランク付けされた結果を改善するにはどうすればよいですか?

加重項を使用した CONTAINSTABLE を使用した製品寸法の検索...

...「1.5mil」の製品が「5mil」の製品よりも上位にランク付けされるランク付け結果を生成します。

「5mil」の一致 (先頭にスペース文字あり) を「.5mil」の一致 (先頭の小数点あり) よりも先にランク付けする方法はありますか?

0 投票する
0 に答える
603 参照

sql-server - キーワード内で検索するための Sql Server Containertable

シナリオ
名前 の列に各製品に関するいくつかのキーワードを保存しましTagsた。ユーザーがこの列に存在する単語を検索すると、関連する製品が表示される必要があります。ユーザーは検索クエリにいくつかの一般的な単語 (たとえば、an,or,some) を入力する可能性があるため、現在、一般性に基づいて各単語に重みを割り当てています。

タグ列を使用
する と全文索引が作成され、Containstableキーワードの検索に使用しています。

問題
数か月後、テーブル サイズが大幅に増加し、使用時に問題が発生していContainstableます。ユーザーが単語を検索すると (関連行のすべてのタグ列でのその単語の出現数が同じ)、結果行のランクは等しくなく、キーワード数が少ない (しきい値から小さい) 各行は、より高いランク。

これは問題ではなく、 https://technet.microsoft.com/en-us/library/ms142524%28v=sql.105%29.aspxに基づいており、ランキング にはとをContainsTable使用してください。IndexedRowCountKeyRowCount

タグ列に出現する単語の加重合計に基づいて各行をランク付けする方法はありますか?

更新機能と重量
のようなものが必要です。https://msdn.microsoft.com/en-us/library/ms187787.aspxに 基づいており、. Contains
weighted_termContains

以下のない私の新しいコードContainsTable。このコードは非常に遅いです。

0 投票する
1 に答える
887 参照

sql-server - CONTAINSTABLE が多くの検索語でどのように機能するか

たとえば、テーブルを取得しましたCompaniesFullNameその中に全文索引を取得したフィールドがあります。CONTAINSTABLE次に、そのテーブルに1 から 10 の単語を結合します@search_word"company*" AND "name*" AND "oil*" AND "propan*" AND "liquid*"...

*そして、単語 (バリアントを含む) がこの数の一致を得たことを知っています。

  • 会社 - 10k
  • 名前 - 5k
  • オイル - 2k
  • プロパン - 1k
  • 液体 - 500
  • 上記のすべての単語を 1 行に - 300 件の一致

したがって、その順序で検索すると、次のようになります。

@search = '"company*" AND "name*" AND "oil*" AND "propan*" AND "liquid*"'

そしてその順序で:

@search = '"liquid*" AND "propan*" AND "oil*" AND "name*" AND "company*"'

クエリの速度に違いはありますか?

0 投票する
0 に答える
47 参照

sql - 値に含まれる SQL 全文検索列

「名前」に全文検索を追加し、次のクエリは正常に機能しています。

select * from products where contains( name, 'milk')

しかし、逆バージョンを実行する方法が見つかりませんでした:

select * from products where contains( 'milk', name)

「ミルク」に含まれるすべての名前を見つける方法はありますか?

0 投票する
1 に答える
37 参照

sql - ' n ' を使用して値を検索するときに実行される包含可能なクエリ

私は全文索引作成にかなり慣れていませんが、「 n 」を含むフレーズを使用して検索するまで、クエリは期待どおりに機能します。

例:

このクエリは何も返しませんが、同じフレーズに対する同じテーブルの LIKE ステートメントは返します。

「 n 」文字は全文検索に意味がありますか? 回避策はありますか?

0 投票する
0 に答える
589 参照

c# - C# で Irony を使用して検索文字列を SQL 全文インデックス クエリに変換する

ユーザーがテキストを入力できる検索ボックスがあります。検索を押すと、入力したテキストがSQL CONTAINSTABLEステートメントで使用されます。関数に適した形式になるように文字列を解析する必要CONTAINSTABLEがあります。必要なことをほぼ正確に実行する Irony を使用する例を見つけました。ここで Irony サンプル クラスを取得しました。

http://irony.codeplex.com/SourceControl/latest#Irony.Samples/FullTextSearchQueryConverter/SearchGrammar.cs

これは実際には SQL CONTAINS 関数用に設計されていますが、それとの違いは現時点でCONTAINSTABLEは問題ではありません。「屈折」動作が望ましくないという点でわずかな変更を加えたので、その参照を「正確」に変更しました。

私が今抱えている問題は、検索フレーズを、AND演算子で区切られたキーワードのリストとしてではなく、フレーズとして扱いたいということです。たとえば、ユーザーが「ゼネラルマネージャー」と入力した場合、パーサーを「ゼネラルマネージャー」として取得したいのですが、現在「ゼネラル」と「マネージャー」を戻しています。

すべての式ルールを構築しているコンストラクターを何らかの方法で変更する必要があると思いますが、どこから始めればよいかさえわかりません!

どんな助けでも大歓迎です、ありがとう。