問題を検索して調整した後、全文検索で 2 つの大きな問題を発見しました。
- ハイフンは単語の区切りとして扱われる場合があります。使用時のみ戻り
| 1 | kayer-meyar |
ます'"ME*"'
。戻りません| 2 | KA-ME |
。end with
問題は、条件が (not or in a middle
)で始まる単語のみを許可するためME + at least one character
です。「では、文字列がこの単語の途中にあるのに、どうして戻ってくる のですか?」と言うことができます。. それは、全文検索がそれを単一の単語と見なさず、2 つの別個の単語 ( のようなもの)と見なして、要件 ( ) を満たしているからです。繰り返しますが、単一の単語ではなく認識し、条件も失敗します(スターが付いていますが、その後に余分な文字はありません)| 1 | kayer-meyar |
me
kayer meyar
me*
KA-ME
KA ME
ME
- フルテキスト インデックスの再構築を試みましたか? .
現在の解決策は次
のとおりです。全文検索クエリのストップリストをオフにしました
これにはこのクエリを使用します(私のテーブル名は ですMyTable
):
ALTER FULLTEXT INDEX ON MyTable SET STOPLIST = OFF
次に、クエリを実行します。今度はあなたの望みの結果が得られます。
そして、ここに私の完全なクエリがあります:
--CREATE TABLE MyTable
--(
--Id INT IDENTITY(1,1),
--Name varchar(max) Not Null
--)
---- To see if FULLTEXT installed or not
--SELECT SERVERPROPERTY('IsFullTextInstalled')
---- http://stackoverflow.com/questions/2306825/why-cant-i-create-this-sql-server-full-text-index
---- https://technet.microsoft.com/en-us/library/ms187317.aspx
---- http://stackoverflow.com/questions/2306825/why-cant-i-create-this-sql-server-full-text-index
---- http://stackoverflow.com/questions/2315577/sql-server-2008-full-text-search-on-a-table-with-a-composite-primary-key
--CREATE UNIQUE INDEX ui_MyTable ON MyTable(Id);
--select name from sysindexes where object_id('MyTable') = id;
--CREATE FULLTEXT CATALOG ft AS DEFAULT;
--CREATE FULLTEXT INDEX ON MyTable(Name)
-- KEY INDEX ui_MyTable
-- WITH STOPLIST = SYSTEM;
--GO
--INSERT INTO MyTable(Name) VALUES('kayer-meyar'),('KA-ME');
ALTER FULLTEXT INDEX ON MyTable SET STOPLIST = OFF
select *
from MyTable
where CONTAINS(Name, '"ME*"')
select *
from MyTable
where CONTAINS(Name, '"KA*"')