예제 #1
0
 public void TestPrepareFullTextQueryEmptyQuery()
 {
     Assert.IsNull(SqlFullTextSearchHepler.PrepareFullTextQuery(null));
     Assert.IsNull(SqlFullTextSearchHepler.PrepareFullTextQuery(""));
     Assert.IsNull(SqlFullTextSearchHepler.PrepareFullTextQuery("  \r\n\t "));
     Assert.IsNull(SqlFullTextSearchHepler.PrepareFullTextQuery("я он в на за"));
 }
예제 #2
0
        public void TestPrepareFullTextQueryMaxLength()
        {
            string phrase = new String('A', 2048);

            string query = SqlFullTextSearchHepler.PrepareFullTextQuery(phrase);

            Assert.AreEqual(1027, query.Length);
        }
예제 #3
0
        public void TestPrepareFullTextQuery()
        {
            string query = SqlFullTextSearchHepler.PrepareFullTextQuery("Я на Cолнышке лежу", true);

            Debug.Write(query);

            Assert.AreEqual(
                "\"cолнышке*\" NEAR \"лежу*\"\n OR FORMSOF(FREETEXT, \"cолнышке\") AND FORMSOF(FREETEXT, \"лежу\")",
                query
                );
        }
예제 #4
0
        public void SearchArticles(string title = "Я на Cолнышке лежу")
        {
            string ftsQuery = SqlFullTextSearchHepler.PrepareFullTextQuery(title, fuzzy: true);

            // "cолнышке*" NEAR "лежу*" OR FORMSOF(FREETEXT, "cолнышке") AND FORMSOF(FREETEXT, "лежу")

            string sql = @"
            SELECT TOP (10)
                a.Id,
                a.Title,
                a.Content,
                fts.[RANK]
            FROM CONTAINSTABLE(Departments, (Title), @ftsQuery) AS fts
            INNER JOIN Articles AS a ON fts.[KEY] = a.ID
            ORDER BY fts.[RANK] DESC";
        }