最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

python 全文檢索引擎詳解

 更新時間:2017年04月25日 11:39:30   投稿:lqh  
這篇文章主要介紹了python 全文檢索引擎詳解的相關(guān)資料,需要的朋友可以參考下

python 全文檢索引擎詳解

最近一直在探索著如何用Python實(shí)現(xiàn)像百度那樣的關(guān)鍵詞檢索功能。說起關(guān)鍵詞檢索,我們會不由自主地聯(lián)想到正則表達(dá)式。正則表達(dá)式是所有檢索的基礎(chǔ),python中有個re類,是專門用于正則匹配。然而,光光是正則表達(dá)式是不能很好實(shí)現(xiàn)檢索功能的。

python有一個whoosh包,是專門用于全文搜索引擎。

whoosh在國內(nèi)使用的比較少,而它的性能還沒有sphinx/coreseek成熟,不過不同于前者,這是一個純python庫,對python的愛好者更為方便使用。具體的代碼如下

安裝

輸入命令行 pip install whoosh

需要導(dǎo)入的包有:

fromwhoosh.index import create_in

fromwhoosh.fields import *

fromwhoosh.analysis import RegexAnalyzer

fromwhoosh.analysis import Tokenizer,Token

中文分詞解析器

class ChineseTokenizer(Tokenizer):
  """
  中文分詞解析器
  """
  def __call__(self, value, positions=False, chars=False,
         keeporiginal=True, removestops=True, start_pos=0, start_char=0,
         mode='', **kwargs):
    assert isinstance(value, text_type), "%r is not unicode "% value
    t = Token(positions, chars, removestops=removestops, mode=mode, **kwargs)
    list_seg = jieba.cut_for_search(value)
    for w in list_seg:
      t.original = t.text = w
      t.boost = 0.5
      if positions:
        t.pos = start_pos + value.find(w)
      if chars:
        t.startchar = start_char + value.find(w)
        t.endchar = start_char + value.find(w) + len(w)
      yield t


def chinese_analyzer():
  return ChineseTokenizer()

構(gòu)建索引的函數(shù)

@staticmethod
  def create_index(document_dir):
    analyzer = chinese_analyzer()
    schema = Schema(titel=TEXT(stored=True, analyzer=analyzer), path=ID(stored=True),
            content=TEXT(stored=True, analyzer=analyzer))
    ix = create_in("./", schema)
    writer = ix.writer()
    for parents, dirnames, filenames in os.walk(document_dir):
      for filename in filenames:
        title = filename.replace(".txt", "").decode('utf8')
        print title
        content = open(document_dir + '/' + filename, 'r').read().decode('utf-8')
        path = u"/b"
        writer.add_document(titel=title, path=path, content=content)
    writer.commit()

檢索函數(shù)

 @staticmethod
  def search(search_str):
    title_list = []
    print 'here'
    ix = open_dir("./")
    searcher = ix.searcher()
    print search_str,type(search_str)
    results = searcher.find("content", search_str)
    for hit in results:
      print hit['titel']
      print hit.score
      print hit.highlights("content", top=10)
      title_list.append(hit['titel'])
    print 'tt',title_list
    return title_list

感謝閱讀,希望能幫助到大家,謝謝大家對本站的支持!

相關(guān)文章

  • python2 與 pyhton3的輸入語句寫法小結(jié)

    python2 與 pyhton3的輸入語句寫法小結(jié)

    這篇文章主要給大家介紹了關(guān)于python2 與 pyhton3的輸入語句寫法,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2018-09-09
  • Python利用遞歸實(shí)現(xiàn)文件的復(fù)制方法

    Python利用遞歸實(shí)現(xiàn)文件的復(fù)制方法

    今天小編就為大家分享一篇Python利用遞歸實(shí)現(xiàn)文件的復(fù)制方法,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2018-10-10
  • Python3.6安裝卸載、執(zhí)行命令、執(zhí)行py文件的方法詳解

    Python3.6安裝卸載、執(zhí)行命令、執(zhí)行py文件的方法詳解

    這篇文章主要介紹了Python3.6之安裝卸載、執(zhí)行命令、執(zhí)行py文件的方法,本文給大家介紹的非常詳細(xì),具有一定的參考借鑒價值,需要的朋友可以參考下
    2020-02-02
  • Python3基礎(chǔ)語法知識點(diǎn)總結(jié)

    Python3基礎(chǔ)語法知識點(diǎn)總結(jié)

    在本篇文章里小編給大家分享的是一篇關(guān)于Python3基礎(chǔ)語法知識點(diǎn)總結(jié)內(nèi)容,有興趣的朋友們可以學(xué)習(xí)下。
    2021-05-05
  • 通過實(shí)例簡單了解Python中yield的作用

    通過實(shí)例簡單了解Python中yield的作用

    這篇文章主要介紹了通過實(shí)例簡單了解Python中yield的作用,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下
    2019-12-12
  • 報錯No?module?named?numpy問題的解決辦法

    報錯No?module?named?numpy問題的解決辦法

    之前安裝了Python,后來因?yàn)榫毩?xí)使用Python寫科學(xué)計算的東西,又安裝了Anaconda,但是安裝Anaconda之后又出現(xiàn)了一個問題,下面這篇文章主要給大家介紹了關(guān)于報錯No?module?named?numpy問題的解決辦法,需要的朋友可以參考下
    2022-08-08
  • python 實(shí)現(xiàn)打印掃描效果詳情

    python 實(shí)現(xiàn)打印掃描效果詳情

    這篇文章主要介紹了python 實(shí)現(xiàn)打印掃描效果詳情,文章圍繞主題展開詳細(xì)的內(nèi)容介紹,具有一定的參考價值,需要的小伙伴可以參考一下
    2022-08-08
  • Python制作Windows憑據(jù)添加工具

    Python制作Windows憑據(jù)添加工具

    這篇文章主要為大家詳細(xì)介紹了如何使用Python制作Windows憑據(jù)添加工具,文中的示例代碼講解詳細(xì),感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)一下
    2024-12-12
  • python可迭代對象去重實(shí)例

    python可迭代對象去重實(shí)例

    這篇文章主要介紹了python可迭代對象去重實(shí)例,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-05-05
  • Python按條件篩選、剔除表格數(shù)據(jù)并繪制剔除前后的直方圖(示例代碼)

    Python按條件篩選、剔除表格數(shù)據(jù)并繪制剔除前后的直方圖(示例代碼)

    本文介紹基于Python語言,讀取Excel表格文件數(shù)據(jù),以其中某一列數(shù)據(jù)的值為標(biāo)準(zhǔn),對于這一列數(shù)據(jù)處于指定范圍的所有行,再用其他幾列數(shù)據(jù)的數(shù)值,加以數(shù)據(jù)篩選與剔除,感興趣的朋友跟隨小編一起看看吧
    2024-07-07

最新評論

淮安市| 乌苏市| 玉林市| 呼伦贝尔市| 沿河| 灵丘县| 渭源县| 墨玉县| 大悟县| 兰州市| 长白| 同仁县| 禄丰县| 云阳县| 肃南| 万盛区| 闵行区| 亳州市| 阜平县| 德庆县| 呼伦贝尔市| 抚远县| 留坝县| 兖州市| 青冈县| 柳州市| 馆陶县| 隆化县| 公主岭市| 华安县| 福州市| 德阳市| 和政县| 阿合奇县| 略阳县| 兰西县| 巢湖市| 沾化县| 德令哈市| 缙云县| 巫溪县|