全文索引搜尋whoosh

2021-06-22 17:17:52 字數 1984 閱讀 7421

whoosh是python中解決索引查詢的模組,在討論索引查詢的文章已經對有關索引查詢進行了闡述,此處詳細說明whoosh模組的應用。

這裡有詳細內容(鏈結被被閹割!)

whoosh在應用上劃分三個步驟:

建立索引和模式物件

寫入索引檔案搜尋

下面依次闡述各步驟

使用whoosh的第一步就是要建立索引物件。首先要定義索引模式,以字段的形式列在索引中。例如:

>>> from whoosh.fields import *

>>> schema = schema(title=text, path=id, content=text)

title/path/content就是所謂的字段。每個字段對應索引查詢目標檔案的一部分資訊,上面的例子中就是建立索引的模式:索引內容包括title/path/content。乙個字段建立了索引,意味著它能夠被搜尋;也能夠被儲存,意味著返回結果。例如上面的例子,可以寫成:

>>> schema = schema(title=text(stored=true), path=id(stored=true), content=text)

這裡在某些字段後面新增了(stored=true),意味著將返回該字段的搜尋結果。

以上就建立好了索引模式,不需要重複建立索引模式,因為一旦此模式建立,將隨索引儲存。

在生產過程中,如果你願意,還可以建立乙個類用於建立索引模式。如下例子:

from whoosh.fields import schemaclass, text, keyword, id, stored

class myschema(schemaclass):

path = id(stored=true)

title = text(stored=true)

content = text

tags = keyword

在上例中,title=text,title是欄位名稱,後面的text是該字段的型別。這兩個分別說明了索引內容和查詢物件型別。whoosh有如下字段型別,供建立所以模式使用。

索引模式建立之後,還要建立索引儲存目錄。如下:

import os.path

from whoosh.index import create_in

from whoosh.index import open_dir

if not os.path.exists('index'): #如果目錄index不存在則建立

os.mkdir('index')

ix = create_in("index",schema) #按照schema模式建立索引目錄

ix = open_dir("index")  #開啟該目錄一遍儲存索引檔案

上例中,用create_in建立乙個具有前述索引模式的索引儲存目錄物件,所有的索引將被儲存在該目錄(index)中。

之後,用open_dir開啟這個目錄。

第一步到此結束。

import os.path

from whoosh import fields

from whoosh import index

schema = fields.schema(title=text(stored=true), path=id(stored=true), content=text)

if not os.path.exists("index"):

os.mkdir("index")

ix = index.create_in("index",schema)

ix = index.open_dir("index")

(待續)

本文屬於閹割之後的版本。要看完整版,請到我的github:qiwsir的itarticles裡面的basicpython。

sql server 全文搜尋(全文索引)

參考 按照鏈結方式建立全文索引 使用 全文查詢使用全文謂詞 contains 和 freetext 以及全文函式 containstable 和 freetexttable 它們支援複雜的 transact sql 語法,這種語法支援各種形式的查詢詞。若要編寫全文查詢,必須了解何時以及如何使用這些謂...

mysql全文索引中文搜尋

由於mysql的預設配置是索引的詞的長度是4,所以需要修改mysql的配置檔案my.cnf 在 mysqld 位置內加入 ft min word len 2 其它屬性還有 ft wordlist charset gbk ft wordlist file home mysql wordlist gbk...

mysql全文索引的坑 MySQL全文索引問題

我有乙個包含以下資料的 文章 mysql select from articles id title body 1 mysql tutorial dbms stands for database 2 how to use mysql well after you went through a 3 o...