2016-07-07 25 views
0

は、我々は、この値を持つ列があるとしましょう:(?CONTAINS)検索文字列

bla dibla 

を検索する表現、私は、この検索文字列を使用して上記のエントリを検索するために使用することができます。

bladibla 
+0

テーブルからカラム名を選択します。 '%bladibla%'のような置換(columnname、 ''、 '')は、このようにしてください – Mani

+0

全文検索ではなく、何か不足していますか? – cs0815

答えて

1

MSSQLは行を解析して文字列から「単語」(トークン)を取得するため、このような文字列を全文検索で検索することは不可能です。したがって、値bla diblaがある場合、MSSQLはそれを2つの単語bladiblaに分割します。 はあなたの問題を解決するために、あなたはこれを行うことができます。

  1. の追加は、以下の式で計算列を持続(replace([Value],' ',''))
  2. このコラム
  3. にフルテキストインデックスを追加して、計算列

を上の検索を使用します
+0

ありがとうございます。潜在的にFREETEXTを伴う曖昧なタイプの検索はありませんか? – cs0815

+1

@csetzkorn私はmsssqlのフルテキスト検索のチューニングに多くの時間を費やしています。単純な「CONTAINS」やマスク検索よりも複雑な作業は非常に困難です。私は常にいくつかのハックや追加の計算、カラム、テーブルなどを使用しなければなりませんでした。したがって、実際の複雑なテキスト検索では、ElasticSearchのようなものを使うべきです。しかし、簡単な解決策はMSSQLで達成することができます。 – Backs

+0

ありがとうございます。 Mongo dbの「フルテキスト検索」に関する意見はありますか? – cs0815