sql server - Miért nem eredményez az SQL teljes szöveg indexelése a (z) # szavakat tartalmazó szavakat?

original title: "sql server - Why doesn't SQL Full Text Indexing return results for words containing #?"


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?

Például, a lekérdezésem az alábbi, mint az SQL Server 2005 használatával: VÁLASZT * Táblázatból, ahonnan a FREETEXT (SearchField, 'c #') Van egy teljes szöveges index, amelyet a SearchField oszlop felhasználására definiáltam, amely r ...

Ez az összefoglalás a fordítás után. Ha meg szeretné tekinteni a teljes fordítást, kattintson a "fordítás" ikonra

Minden válasz
  • Translate

    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).

  • Translate

    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.