全文索引——CONTAINS 語法

polalisi發表於2007-09-11

全文索引——CONTAINS 語法我們通常在 WHERE 子句中使用 CONTAINS ,就象這樣:SELECT * FROM table_name WHERE CONTAINS(fullText_column,'search contents')

我們透過例子來學習,假設有表 students,其中的 address 是全文字檢索的列。
1.
查詢住址在北京的學生
SELECT student_id,student_name
FROM students
WHERE CONTAINS( address, 'beijing' )
remark: beijing
是一個單詞,要用單引號括起來。

2. 查詢住址在河北省的學生
SELECT student_id,student_name
FROM students
WHERE CONTAINS( address, '"HEIBEI province"' )
remark: HEBEI province
是一個片語,在單引號裡還要用雙引號括起來。

3. 查詢住址在河北省或北京的學生
SELECT student_id,student_name
FROM students
WHERE CONTAINS( address, '"HEIBEI province" OR beijing' )
remark:
可以指定邏輯運算子(包括 AND AND NOTOR )

4. 查詢有 '南京路' 字樣的地址
SELECT student_id,student_name
FROM students
WHERE CONTAINS( address, 'nanjing NEAR road' )
remark:
上面的查詢將返回包含 'nanjing road''nanjing east road''nanjing west road' 等字樣的地址。
A NEAR B
,就表示條件: A 靠近 B

5. 查詢以 '' 開頭的地址
SELECT student_id,student_name
FROM students
WHERE CONTAINS( address, '"hu*"' )
remark:
上面的查詢將返回包含 'hubei''hunan' 等字樣的地址。
記住是 *,不是 %

6. 類似加權的查詢
SELECT student_id,student_name
FROM students
WHERE CONTAINS( address, 'ISABOUT (city weight (.8), county wright (.4))' )
remark: ISABOUT
是這種查詢的關鍵字,weight 指定了一個介於 0~1之間的數,類似係數(我的理解)。表示不同條件有不同的側重。

7. 單詞的多型查詢
SELECT student_id,student_name
FROM students
WHERE CONTAINS( address, 'FORMSOF (INFLECTIONAL,street)' )
remark:
查詢將返回包含 'street''streets'等字樣的地址。
對於動詞將返回它的不同的時態,如:dry,將返回 drydrieddrying 等等。

[@more@]

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/10455649/viewspace-968948/,如需轉載,請註明出處,否則將追究法律責任。