自動外鏈工具 在線排版工具 搜索引擎提交入口 wordpress主題推薦 批量打開網址工具 【老域名購買】 思享SEO導航 【網站合作】

whoosh為discuz帖子和文章標題創建索引

294

1、給Discuz帖子、文章標題創建索引

2、輸入一個關鍵詞,返回與這個關鍵詞相關的帖子和文章

 

#?coding=utf-8
import?os,json,time
from?whoosh.index?import?create_in
from?whoosh.fields?import?*
from?jieba.analyse?import?ChineseAnalyzer
from?whoosh.qparser?import?QueryParser
from?whoosh?import?qparser,?scoring
from?whoosh?import?index
import?MySQLdb?as?mdb
?
reload(sys)
sys.setdefaultencoding('utf8')
?
start?=?time.time()
con?=?mdb.connect('127.0.0.1','root','','wddis',charset='utf8',unix_socket='/tmp/mysql.sock')
'''
表信息:
pre_forum_thread.subject&tid?-->?存放帖子標題
pre_portal_article_title.title&aid-->?存放文章標題
'''
def?new_index_sql():
#?按照schema定義信息,增加需要建立索引的文檔
#?注意:字符串格式需要為unicode格式
?
writer?=?ix.writer(limitmb=256,procs=4)
cur?=?con.cursor()
?
n?=?0
a?=?cur.execute("select?count(*)?from?pre_forum_thread?")
number?=?int(cur.fetchone()[0])
?
with?con:
cur.execute("select?tid,fid,subject?from?pre_forum_thread")
numrows?=?int(cur.rowcount)
for?i?in?range(numrows):
row?=?cur.fetchone()
?
tid?=?row[0]
fid?=?row[1]
title?=?row[2]
?
writer.add_document(title=title,?tid=tid,?fid=fid)
?
n?+=?1
percent=float(n)*100/float(number)
sys.stdout.write("----------->?完成百分比:%.2f"?%?percent)
sys.stdout.write("%\r")
sys.stdout.flush()
?
writer.commit()
sys.stdout.flush()
?
def?search_index(words):
with?ix.searcher()?as?s:
#?group=qparser.OrGroup?表示可匹配任意查詢詞,而不是所有查詢詞都匹配才能出結果
qp?=?QueryParser('title',schema=ix.schema,group=qparser.OrGroup)???
#?下面兩行表示可以使用通配符搜索,如”窗前*月光“
qp.remove_plugin_class(qparser.WildcardPlugin)
qp.add_plugin(qparser.PrefixPlugin())
for?word?in?words:
q?=?qp.parse(u'%s'?%?word)
results?=?s.search(q,limit=20)
for?i?in?results:
#print?word?+?"----->"?+?i["title"],i.highlights("title"),i.score
print?word,i['title'],i['tid'],i['fid']
?
?
#?使用結巴中文分詞
analyzer?=?ChineseAnalyzer()
?
#?創建schema,?stored為True表示能夠被檢索
schema?=?Schema(
title=TEXT(stored=True,?analyzer=analyzer),
tid=NUMERIC(stored=True),
fid=NUMERIC(stored=True),
)
?
#?存儲schema信息至'798wd_luntan'目錄下
indexdir?=?'798wd_luntan/'
if?not?os.path.exists(indexdir):
os.mkdir(indexdir)
try:
ix=index.open_dir(indexdir)
print?'>>>>>>>>?已創建索引?<<<<<<<<<<'
except:
print?'>>>>>>>>?未創建索引?<<<<<<<<<<'
ix?=?create_in(indexdir,?schema)
new_index_sql()
?
?
words?=?["容易下款的高炮口子"]
search_index(words)
end?=?time.time()
print?"完成時間:?%f?s"?%?(end?-?start)

來源:本文由思享SEO博客原創撰寫,歡迎分享本文,轉載請保留出處和鏈接!
seo培訓評論廣告

搶沙發

昵稱*

郵箱*

網址

七乐彩选号技巧