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

python 全文檢索引擎詳解

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

python 全文檢索引擎詳解

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

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

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

安裝

輸入命令行 pip install whoosh

需要導入的包有:

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()

構建索引的函數

@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()

檢索函數

 @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

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

相關文章

  • python2 與 pyhton3的輸入語句寫法小結

    python2 與 pyhton3的輸入語句寫法小結

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

    Python利用遞歸實現文件的復制方法

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

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

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

    Python3基礎語法知識點總結

    在本篇文章里小編給大家分享的是一篇關于Python3基礎語法知識點總結內容,有興趣的朋友們可以學習下。
    2021-05-05
  • 通過實例簡單了解Python中yield的作用

    通過實例簡單了解Python中yield的作用

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

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

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

    python 實現打印掃描效果詳情

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

    Python制作Windows憑據添加工具

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

    python可迭代對象去重實例

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

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

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

最新評論

安丘市| 太原市| 恩平市| 丰镇市| 郯城县| 云南省| 临江市| 大安市| 都安| 丹阳市| 漳平市| 宁津县| 鄂尔多斯市| 罗平县| 华阴市| 华亭县| 特克斯县| 洛浦县| 德保县| 尉氏县| 涿州市| 思南县| 南康市| 嘉峪关市| 龙里县| 尉氏县| 保山市| 桦甸市| 皋兰县| 茂名市| 盘山县| 平阴县| 锦屏县| 游戏| 武义县| 榕江县| 彭阳县| 介休市| 阳山县| 彝良县| 临夏市|