SQL全文索引付けが#を含む単語の結果を返すのはなぜですか? -- sql フィールド と sql-server フィールド と sql-server-2005 フィールド と indexing フィールド と full-text-search フィールド 関連 問題

Why doesn't SQL Full Text Indexing return results for words containing #?












26
vote

問題

日本語

例えば、SQL Server 2005を使用して、次のようなマイクエリは次のようなものです。

<事前> <コード> SELECT * FROM Table WHERE FREETEXT(SearchField, 'c#')

使用時に結果を返す列SearchFielsを使用するように定義された全文索引があります。

<事前> <コード> SELECT * FROM Table WHERE SearchField LIKE '%c#%'

#は特別な手紙であると信じているので、上記のクエリのためにFreeTextが正しく機能することを許可する方法は?

英語

For instance, my query is like the following using SQL Server 2005:

SELECT * FROM Table WHERE FREETEXT(SearchField, 'c#')  

I have a full text index defined to use the column SearchField which returns results when using:

SELECT * FROM Table WHERE SearchField LIKE '%c#%' 

I believe # is a special letter, so how do I allow FREETEXT to work correctly for the query above?

</div
              
 
 

回答リスト

14
 
vote
vote
ベストアンサー
 

#charは句読点として索引付けされ、したがって無視されるので、単語の索引付けの無視リストから文字cを削除するようになります。

ローカルにそれをしてからその後インデックスを再構築して結果を得ました!

インデックス付き列で別の単語ブレーカ言語を使用することを注意して、それらの特殊文字は無視されないようにします。

編集:私はまたこの情報:

C#はCとして索引付けされます(Cがノイズワードリストにない場合は、後でノイズワードリストの詳細を参照)、C#はC#としてインデックスが付けられています(CまたはCの場合はWin2003で実行されているSQL 2000では、Win2003で実行されているSQL 2000ではノイズワードリストで) C#として保存されているC#だけでなく、大文字の後に#が続きます。逆に、C ++(およびその後の他の小文字の後には++の後に任意の小文字)はCとしてインデックス付けされます(Cのどちらのノイズワードリストにあるかにかかわらず)。

 

The # char is indexed as punctuation and therefore ignored, so it looks like we'll remove the letter C from our word indexing ignore lists.

Tested it locally after doing that and rebuilding the indexes and I get results!

Looking at using a different word breaker language on the indexed column, so that those special characters aren't ignored.

EDIT: I also found this information:

c# is indexed as c (if c is not in your noise word list, see more on noise word lists later), but C# is indexed as C# (in SQL 2005 and SQL 2000 running on Win2003 regardless if C or c is in your noise word list). It is not only C# that is stored as C#, but any capital letter followed by #. Conversely, c++ ( and any other lower-cased letter followed by a ++) is indexed as c (regardless of whether c is in your noise word list).

</div
 
 
1
 
vote

多くの複製ヘルプの引用索引サービスクエリ言語について:

&amp;、|、^、#、@、$、(、)などの特別に扱われた文字を使用するには、クエリでクエリを引用符( ")に囲みます。

私が知っている限り、<コード> MSSQL の全文検索もインデックスサービスによって行われているため、これは役に立ちます。

 

Quoting a much-replicated help page about Indexing Service query language:

To use specially treated characters such as &, |, ^, #, @, $, (, ), in a query, enclose your query in quotation marks (").

As far as I know, full text search in MSSQL is also done by the Indexing Service, so this might help.

</div
 
 

関連する質問

13  PostgreSQL全文検索ランキングを使用するための最良の方法  ( Best way to use postgresql full text search ranking ) 
この答え私は、PostgreSQLの組み込み全文検索を使用する最善の方法がわかりたいです。ランクごとに並べ替えたい場合は、との制限を一致させるQueriesのみに制限します。 非常に単純なテーブルを仮定しましょう。 <事前> <コード> CREATE TABL...

19  SQL Server 2005 Expressでフルテキストインデックスを有効にする方法  ( How to enable full text indexing in sql server 2005 express ) 
SQL Server 2005 Expressで全文索引付けを有効にしようとしています。私はこれを私のラップトップでVista Ultimateと一緒に走ります。 SQL Server Expressの標準バージョンに全文索引付けがないことを理解しています...

43  純粋なPython Luceneはありますか?  ( Is there a pure python lucene ) 
Rubyの人々には、 ferret 。誰かがPythonのための類似のイニシアチブを知っていますか?私たちは現在のPyluceneを使っていますが、純粋なPython検索への移行を調査したいのですが。 ...

6  短いフレーズの検索とランキング(映画タイトル)  ( Searching and ranking short phrases e g movie titles ) 
短いフレーズ(私たちの場合は映画のタイトルの中)の検索機能を改善し、現在SQL Server 2008全文検索を見ています。 単語の言葉(例えば、「見た」、「見た」などを意味します。) 同義語(例えば、 "6"は "vi"と同義です) しかしながら、標準的...

26  SQL全文索引付けが#を含む単語の結果を返すのはなぜですか?  ( Why doesnt sql full text indexing return results for words containing ) 
例えば、SQL Server 2005を使用して、次のようなマイクエリは次のようなものです。 <事前> <コード> SELECT * FROM Table WHERE FREETEXT(SearchField, 'c#') 使用時に結果を返す列Searc...

3  Stringを含む文字列を渡すときのストアドプロシージャの構文エラー  ( Syntax error in stored procedure when passing string containing space ) 
List2 のように、 List1 をスペース区切り値で渡すときは、構文エラーがあります。 List3 の中央にスペースがない場合は、そのような構文エラーはありません。何が間違っているのか? 私はこのようにしてストアドプロシージャを呼び出します、 <事前...

12  SQL Server 2008にFullTextをインストールする方法  ( How to install fulltext on sql server 2008 ) 
SQL Server 2008ボックスにFullTextをインストールしようとしています。 「プログラムと機能」、選択したSQL Server 2008に行き、今度はこのポップアップを選択してください。追加/修理または削除します。 追加をクリックして、SQL...

48  SQL Serverで作業するためのリード性のワイルドカードのフルテキスト検索をどのように取得しますか?  ( How do you get leading wildcard full text searches to work in sql server ) 
注: i am SQLの全文検索機能を使用すると、句が含まれています。*は、フルテキストのワイルドカードで、%は句のみのためのワイルドカードです。 。 私はいくつかの場所で「リーディングワイルドカード」の検索(例えば "stackoverflow"を一致...

8  PostgreSQLとMySQLの全文検索  ( Postgresqls and mysqls full text search ) 
PostgreSQLとMySQLの全文検索システムをどのように比較しますか?明らかに身に着けていますか?どのように彼らは異なりますか? ...

0  XQueryフル検索子供のテキスト  ( Xquery full search text of children ) 
XQueryを使用してexist-dbでキーワードの検索を行うことは可能ですか? を使ってみました <事前> <コード> //foo//@val[. &= $param] しかしこれは私のバージョンのexist-db(1.4.2)でサポートされていない...




© 2022 cndgn.com All Rights Reserved. Q&Aハウス 全著作権所有