`
siuying
  • 浏览: 90908 次
  • 性别: Icon_minigender_1
  • 来自: 香港
最近访客 更多访客>>
社区版块
存档分类
最新评论

全文搜尋 (Lucene 和 Ferret)

    博客分类:
  • Tech
阅读更多

搜尋器改變了人們的習慣。當有能力在互聯網上用 0.01 秒的搜尋就找到想要的資料時,如果我們的軟件要花個幾秒甚至幾分鐘才找到資料,用家就會覺得這個軟件很差勁了。

怎樣去做搜尋?

最近單的方法莫過於 SELECT * FROM MYTABLE WHERE CONTENT LIKE '%KEYWORD1%' OR '%KEYWORD2%' 。我們的專案就是用這個方法搜尋用戶地址。這個方法完全沒有問題 — 起碼 — 在這一年多的開發、測試環境也沒有問題。直到在實際環境中 — 有上百萬條記錄的資料庫 — 這種搜尋對資料庫的壓力太大了。試想著每次也由頭到尾由「黃頁」找一個人吧。每條查詢花上2秒以上的時間,我們的系統可是有 3000 個同時的用家啊!

全文搜索

全文搜索是另一個方法。它的原理是把文件每一個字也加進索引中,就如查「黃頁」可以直接打開相關的頁數一樣,效率比傳統方法快上一個數量級。

Lucene 是一個 Java 的全文搜索工具,利用它任何 Java 軟件也可以為任何文件作全文搜索。它分成兩部份:索引和搜尋。前者把文件經整理和分詞化成可以搜尋的索引;後者則由用者的查詢返回相關結果。Lucene 的擴展性很高,開發者可以編寫不同的 document parser 讓 lucene 支援任何文檔,擴展 Analyzer 以支援不同的語言,也可以自定 query parser 改變搜尋的特性。

Lucene 的發展相當成熟,我可不用班門弄斧寫教學了,初學者請讀 IBM developerWorks 实战 Lucene,第 1 部分: 初识 Lucene  。

Ruby on Rails 的全文搜索

提起全文搜索不能不提 Ruby on Rails 的全文搜索解決方案:act_as_ferret了,它是個基於 Lucene 設計的,Ruby on Rails 的全文搜尋工具。 只需要在 Model 中加一句:act_as_ferret,你的 data model 就立即有全文搜索功能!這在以前就像奇跡啊!要搜尋也易如反掌,如 Address.find_by_content('district:mong kok AND name:tong') 就行了,Query 是跟 Lucene 一樣的,使用過 Lucene 的開發者不會有問題。

小小的問題:Terret 的預設 Analyzer 並不支援 CJK 的分詞,完全不能索引中文文件。不過用 lukhnos 發表的簡單 regular expression analyzer 己經可以解決基本的問題了。

相關連結: 

 

分享到:
评论

相关推荐

    Lucene全文搜索_LuceneJava全文搜索_

    总之,Lucene作为Java全文搜索的基石,提供了强大的功能和灵活性,可以帮助开发者构建高效、精准的搜索功能,无论是简单的关键词搜索还是复杂的模糊和智能查询,都能游刃有余地应对。结合"用户管理手册.docx"的学习...

    xwiki全文搜索lucene后台代码

    XWiki选择Lucene作为其全文搜索的后台引擎,是因为Lucene的高效性和灵活性。XWiki中的每个文档都被视为一个独立的信息单元,通过Lucene的索引机制,可以快速地对文档内容进行检索。XWiki通过扩展其核心服务,实现了...

    全文搜索Lucene&ElasticSearch-新版.doc

    【全文搜索Lucene & ElasticSearch】是一门关于安装和入门的课程,主要涵盖了全文检索的基本概念,Lucene和ElasticSearch的介绍,以及如何使用Java操作ElasticSearch。全文检索,顾名思义,是对非结构化数据进行搜索...

    全文搜索-Lucene

    Lucene 实现了索引和搜索的核心算法,包括倒排索引、TF-IDF(词频-逆文档频率)等,使得开发者能够快速构建自己的全文检索系统。 **一、Lucene 的核心概念** 1. **倒排索引(Inverted Index)**:这是 Lucene 最...

    java全文搜索lucene-3.0.0-src+lib.zip

    Java全文搜索引擎Lucene是一款开源的、高性能的文本分析和检索库,它为开发者提供了在Java应用程序中实现全文搜索功能的能力。本篇将深入探讨Lucene 3.0.0版本的核心特性、设计理念以及使用方法。 一、Lucene概述 ...

    全文检索Lucene 全文检索Lucene

    Lucene是Apache软件基金会的开源项目,它是一个高性能、全文本搜索库,被广泛用于构建各种搜索引擎。Lucene提供了一个简单但功能强大的API,开发者可以使用这个API来添加全文检索功能到自己的应用中。本文将深入探讨...

    全文搜索lucene知识

    **全文搜索Lucene知识** Lucene是一个开源的全文搜索引擎库,由Apache软件基金会开发并维护。它是Java语言编写,但可以被其他编程语言通过各种桥接库进行调用。Lucene的核心功能包括文本分析、索引创建、查询解析...

    lucene实现全文搜索

    通过理解并熟练运用Document、Field、Directory、Analyzer和IndexWriter等核心概念,开发者可以构建出高效的全文搜索解决方案,实现类似搜索引擎的功能。在实际应用中,可以根据需求调整分析器、优化索引策略,以...

    [HeyJava][传智播客]全文检索Lucene源码

    通过深入学习HeyJava和传智播客提供的Lucene源码教程,你将能掌握如何在实际项目中运用Lucene,创建高效、精准的全文搜索引擎。同时,了解源码也有助于定制化需求,优化性能,或者解决遇到的问题。

    Lucene.Net 实现全文检索

    Lucene.Net 是一个基于 Apache Lucene 的开源全文搜索引擎库,专为 .NET Framework 平台设计。它提供了一套高级文本搜索程序库,让开发者能够在 .NET 应用程序中轻松实现全文检索功能。在本案例中,我们将在 .Net ...

    lucene全文检索简单索引和搜索实例

    总结,Lucene作为一款强大的全文检索库,其核心在于索引的创建和搜索的执行。通过理解其基本概念和操作流程,开发者可以灵活地构建符合需求的全文检索系统。在实际应用中,我们还需要关注性能优化、查询复杂性和用户...

    最新全文检索 lucene-5.2.1 入门经典实例

    《最新全文检索 Lucene-5.2.1 入门经典实例》 Lucene是一个开源的全文检索库,由Apache软件基金...通过学习和实践这些经典实例,开发者能够掌握如何利用Lucene构建高效的全文检索系统,提升数据的可搜寻性和用户体验。

    Lucene全文检索引擎

    **Lucene全文检索引擎** Lucene是Apache软件基金会的一个开源项目,...总结来说,Lucene是一个强大的全文检索引擎,通过理解和掌握其工作原理及API,开发者可以构建出高效、灵活的搜索功能,满足各种复杂的搜索需求。

    springmvc集成lucene全文搜索

    Lucene则是一个高性能、全文本搜索库,提供了索引和搜索文本的强大功能,可以高效地处理大量数据的全文检索。 在Spring MVC中集成Lucene,通常包括以下几个步骤: 1. **引入依赖**:在项目中添加Lucene的相关依赖...

    Lucene.Net实现全文搜索

    ### Lucene.Net 实现全文搜索 #### 一、Lucene.Net 概述 **Lucene.Net** 是一个基于 .NET 的高性能全文检索引擎库。它最初由 Java 版本的 Lucene 发展而来,旨在为 .NET 开发者提供一个强大而灵活的搜索解决方案。...

Global site tag (gtag.js) - Google Analytics