背景和現狀
隨著網際網路上信息資源的爆炸式增長,如何在海量的信息中準確、快速地找到自己所需的信息資源,是個迫切需要解決的問題,搜尋引擎應運而生,在很大程度上滿足了人們搜尋信息的需求。
目前,網路信息的數量越來越龐大,而且存在的形式也趨於多元化,網際網路上逐漸增加了很多專業領域知識,行業網站或專業網站都有了很快的發展,人們對網際網路上專業領域知識的需求也越來越大,但像Google、百度、雅虎這樣傑出的通用搜尋引擎在專業知識方面的查詢效果並不理想,通用搜尋引擎的信息量大、查詢不夠準確、深度不夠等特點,使得其越來越難以滿足人們日益上漲的對專業領域知識的需求。因此,研究專業信息領域的搜尋引擎技術有著重大的意義和巨大的市場價值。
垂直搜尋引擎是針對某一行業的專業搜尋引擎,是搜尋引擎的細分和延伸,是對網際網路上某類領域知識的信息的一次整合,通過定向分欄位抽取出需要的數據進行處理後以某種形式返回給用戶。垂直搜尋引擎專門收集分析某一個行業的信息,為某個行業提供搜尋服務甚至問題解決方案。垂直搜尋引擎是一種新的搜尋引擎服務模式,它是針對某一特定領域、特定人群或特定需求提供的有一定價值的信息和相關服務。其特點是“專、精、深”,具有很深的行業色彩,同時其蒐集的信息也是與用戶感興趣的主題相關的,信息量較少,更新也非常及時,從而保證搜尋結果更加準確、靈活。
隨著垂直搜尋引擎的出現,確實較好的解決了部分領域用戶的信息需求,但是由於垂直搜尋引擎的開發套用比較晚,而目前的專業領域又較多,聽以垂直搜尋引擎難以滿足所有專業領域用戶的需求;同時,對於很多用戶來講,難以找到垂直搜尋引擎,並通過其搜尋所需要的專業領域知識,也可以說垂直搜尋引擎的普及程度還遠遠不夠,套用範圍也很窄,並不能為大多數用戶所使用。而相對的通用搜尋引擎的套用則很方便。
搜尋條件
是使用邏輯運算符 AND、OR 和 NOT 的一個或更多謂詞的組合。
參數
指定 SELECT 語句、查詢表達式或子查詢的結果集內所返回的行的條件。對於 UPDATE 語句,指定要更新的行。對於 DELETE 語句,指定要刪除的行。對 Transact-SQL 語句搜尋條件中可以包含的謂詞數量沒有限制。
•NOT
•對由謂詞指定的布爾表達式求反。
•AND
•組合兩個條件並在兩個條件都是 TRUE 時取值為 TRUE。
•OR
•組合兩個條件並在任何一個條件是 TRUE 時取值為 TRUE。
是返回 TRUE、FALSE 或 UNKNOWN 的表達式。
•expression
•是列名、常量、函式、變數、標量子查詢,或者是由運算符或子查詢連線的列名、常量和函式的任意組合。該表達式還可以包含 CASE 函式。
•=
•是用於測試兩個表達式是否相等的運算符。
•<>
•是用於測試兩個表達式彼此不相等的條件的運算符。
•!=
•是用於測試兩個表達式彼此不相等的條件的運算符。
•>
•是用於測試一個表達式大於另一個的條件的運算符。
•>=
•是用於測試一個表達式大於或等於另一個的條件的運算符。
•!>
•是用於測試一個表達式不大於另一個的條件的運算符。
•<
•是用於測試一個表達式小於另一個的條件的運算符。
•<=
•是用於測試一個表達式小於或等於另一個的條件的運算符。
•!<
•是用於測試一個表達式不小於另一個的條件的運算符。
•string_expression
•是字元串和通配符。
•[NOT] LIKE
•表示對後續字元串使用模式匹配。有關更多信息,請參見LIKE。
•ESCAPE'escape_character'
•允許在字元串中搜尋通配符而不是將其作為通配符使用。escape_character是放在通配符前表示此特殊用途的字元。
•[ NOT ] BETWEEN
•指定值的包含範圍。使用 AND 將開始值和結束值分開。有關更多信息,請參見BETWEEN。
•IS [NOT] NULL
•根據所使用的關鍵字指定對空值或非空值的搜尋。如果有任何運算元是 NULL,帶位運算符或算術運算符的表達式將取值為 NULL。
•CONTAINS
•在包含基於字元的數據的列中,搜尋單個詞和短語的精確或"模糊"(不精確)匹配項、一定間距內的近似詞以及加權匹配項。只能與 SELECT 語句一起使用。有關更多信息,請參見CONTAINS。
•FREETEXT
•通過在包含基於字元的數據的列中,搜尋與含義而不是謂詞中的精確詞相匹配的值,提供簡單形式的自然語言查詢。只能與 SELECT 語句一起使用。有關更多信息,請參見FREETEXT。
•[ NOT ] IN
•根據表達式是包含在列表內還是排除在列表外,指定對表達式的搜尋。搜尋表達式可以是常量或列名,而列表可以是一組常量或更多情況下是子查詢。將值列表放在圓括弧內。有關更多信息,請參見IN。
•subquery
•可被看成是受限 SELECT 語句且與 SELECT 語句中的 相似。不允許使用 ORDER BY 子句、COMPUTE 子句和 INTO 關鍵字。有關更多信息,請參見SELECT。
•ALL
•與比較運算符和子查詢一起使用。如果子查詢檢索的所有值滿足比較運算,將給 返回 TRUE,或者如果不是所有值都滿足比較運算或子查詢沒有給外部語句返回行,則返回 FALSE。有關更多信息,請參見ALL。
•{ SOME | ANY }
•與比較運算符和子查詢一起使用。如果子查詢檢索的任何值都滿足比較運算,將給 返回 TRUE,或者如果子查詢內沒有值滿足比較運算或子查詢沒有給外部語句返回行,則返回 FALSE。否則,表達式是未知的。有關更多信息,請參見SOME | ANY。
•EXISTS
•與子查詢一起使用,測試由子查詢返回的行是否存在。有關更多信息,請參見EXISTS。
注釋
邏輯運算符的優先順序是 NOT(最高),接著是 AND,最後是 OR。同一優先權上的取值順序是從左到右。在搜尋條件內,可使用圓括弧替代此順序。有關邏輯運算符如何在真實值上運算的更多信息,請參見AND、OR和NOT。
示例A. 在 WHERE 中使用 LIKE 和 ESCAPE 語法
下例假定 description列存在於 finances表內。若要搜尋其中的 description列包含精確字元 g_ 的行,請使用 ESCAPE 選項,因為 _ 是通配符。如果不指定 ESCAPE 選項,查詢將搜尋任何包含字母 g 後跟除 _ 字元外的任何單個字元的描述值。
SELECT *FROM financesWHERE description LIKE 'gs_' ESCAPE 'S'GOB. 對 Unicode 數據使用 WHERE 和 LIKE 語法
下例使用 WHERE 子句檢索公司名稱末尾包含字元串 snabbköp 的公司的聯繫人姓名、電話和傳真號碼。
USE NorthwindSELECT CompanyName, ContactName, Phone, FaxFROM CustomersWHERE CompanyName LIKE N'%snabbköp'ORDER BY CompanyName ASC, ContactName ASC
在族表中執行單一條件搜尋
1.在“族表”(Family Table)對話框中,單擊“編輯”(Edit)>“查找”(Find),或單擊。打開“搜尋”(Search)對話框。
2.從“類型”(Type)列表中選擇信息類型,然後從“值”(Value)列表中選擇相應的值。對於預定義的信息類型,預先確定的項出現在右側的“值”(Value)列表中。細化條件,方法是選擇 = (等於) 或 != (不等於)。
“表達式”(Expression)參數是指將要在參數列表中搜尋的表達式。
3.單擊“添加”(Add),將當前的條件定義添加到對話框底部的搜尋條件列表中。
4.單擊“查找”(Find),執行搜尋。從“族表”(或當前單元,如果已選擇一個) 的頂部開始,搜尋引擎將移向下一個滿足搜尋判據的項。繼續單擊“查找”(Find),移動到找到的下一個項處。
5.要移除一個搜尋條件而使用另一個不同的條件,在搜尋判據列表中選擇條件,並單擊“移除”(Remove)。條件就被清除了,可以使用新的條件。
6.為了改變條件,選擇一個條件並單擊“添加/更改”(Add/Change)。然後可重新定義,如第 2 步和第 3 步所述。
7.完成搜尋後單擊“關閉”(Close)。
指定搜尋條件
通過指定搜尋條件可指定查詢中出現的數據行。例如,如果要查詢employee表,則可指定僅查找在特定地區工作的雇員。
使用表達式可以指定搜尋條件。通常表達式由運算符和搜尋值組成。例如,若要查找特定銷售區的雇員,可為region列指定下列搜尋條件:
•如果尚未指定搜尋條件,請將要在搜尋條件內使用的列或表達式添加到“條件”窗格中。
•如果在創建“選擇”查詢而且不希望該搜尋列或表達式出現在查詢輸出中,請清除每個搜尋列或表達式的“輸出”列,以將其作為輸出列移除。
•定位到包含要搜尋的數據列或表達式的行,然後在“篩選器”列中輸入搜尋條件。
為同一列指定多個搜尋條件
在某些情況下,可能希望對同一數據列套用多個搜尋條件。
例如:
•在employee表中搜尋幾個不同的名字或搜尋享受不同薪金範圍的雇員。這種類型的搜尋需要使用 OR 條件。
•搜尋以單詞“The”開頭並包含單詞“Cook”的書名。這種類型的搜尋需要使用 AND 條件。
在族表中執行多條件搜尋
為了執行更準確的搜尋,有必要設有多個搜尋參數。搜尋工具允許進行這樣的簡單設定和自定義。
1.在“族表”(Family Table)對話框中,單擊“編輯”(Edit)>“查找”(Find),或單擊。打開“搜尋”(Search)對話框。
2.從“類型”(Type)列表中選擇所需的信息類型,然後從“值”(Value)列表中選擇相應的值。對於預定義的信息類型,預先確定的項出現在右側的“值”(Value)列表中。細化條件,方法是選擇 = (等於) 或 != (不等於)。
“表達式”(Expression)參數是指將要在參數列表中搜尋的表達式。
如果從“表項”(Table Item)類型列表中選擇模型參數,則可以在“值”(Value)列表下方的文本框中鍵入搜尋值。
3.單擊“添加”(Add),將當前的條件定義添加到對話框底部的搜尋條件列表中。
4.附加條件被包括到搜尋中以後,出現在搜尋條件列表中,用默認的“與”(AND)操作符分隔。要更改此運算符,可在列表框中選擇它,然後選取列表框上方的選項按鈕“與”(AND)或“或”(OR)。
圓括弧中的項一起被計算,如下所示:
(conditional AND conditional) OR (conditional)
5.單擊“查找”(Find),執行搜尋。從“族表”(或當前單元,如果已選擇一個)的頂部開始,搜尋引擎將移向下一個滿足搜尋判據的項。繼續單擊“查找”(Find),移動到找到的下一個項處。
6.要移除一個搜尋條件而使用另一個不同的條件,在搜尋判據列表中選擇條件,並單擊“移除”(Remove)。條件就被清除了,可以使用新的條件。
7.為了改變條件,選擇一個條件並單擊“添加/更改”(Add/Change)。然後可重新定義,如第 2 步和第 3 步所述。
8.完成搜尋後單擊“關閉”(Close)。
搜尋條件檔案
對於包含您所指定的文本的檔案類型,沒有註冊篩選器組件;或者,篩選器組件忽略了您所指定的文本。要在使用“檔案中的一個字或詞組”搜尋條件時讓搜尋結果中包括某個檔案類型,必須為該檔案類型註冊有效的篩選器組件。Windows XP 只為與常見文檔類型相關的檔案類型註冊了篩選器組件。
•Windows XP 中的標準篩選器組件包括:
•Mimefilt.dll:篩選多用途 Internet 郵件擴展 (MIME) 檔案
•Nlhtml.dll:篩選 HTML 3.0 或更低版本的檔案
•Offfilt.dll:篩選 Microsoft Office 檔案(Microsoft Word、Microsoft Excel 和 Microsoft PowerPoint。
•Query.dll:篩選純文本檔案(默認篩選器)和二進制檔案(空篩選器)由於文本的格式或內容方面的原因,篩選器組件可能會忽略某些文本。
例如,HTML 3.0 篩選器 (Nlhtml.dll) 會忽略 HTML 檔案(例如,擴展名為 .htm 或 .asp 的檔案)的注釋中包含的文本,因為在瀏覽器中打開這類檔案時未顯示此文本。
Microsoft Windows 2000 和更低版本的 Windows 會在所有檔案中搜尋您指定的內容。Windows XP 並不搜尋所有檔案,這是為了提高搜尋性能和避免得到無關結果。無論您在搜尋時是否使用索引服務,搜尋操作都是這樣進行。解決方案方法 1要解決下列檔案類型存在的這一問題,請獲取最新的 Windows XP Service Pack,或者從 Windows Update 網站安裝。