深入理解搜索-精确匹配搜索

查出在某个域中,含有某个词的指定文档数,要用到的方法是TermQuery

public void searchByTerm(String field,String name,int num) {

   try {

      IndexSearcher searcher = getSearcher();

      Query query = new TermQuery(new Term(field,name));

      TopDocs tds = searcher.search(query,  num);

      System.out.println("一共查询了:"+tds.totalHits);

      for(ScoreDoc sd:tds.scoreDocs) {

          Document doc = searcher.doc(sd.doc);

          System.out.println(doc.get("id")+"---->"+

                 doc.get("name")+"["+doc.get("email")+

                 "]-->"+doc.get("id")+","+

                 doc.get("attach")+","+doc.get("date"));

      }

      searcher.close();

   } catch (CorruptIndexException e) {

      e.printStackTrace();

   } catch (IOException e) {

      e.printStackTrace();

   }

}

@Test

public void searchByTerm() {

   su.searchByTerm("content","football",3);

}

本文链接:深入理解搜索-精确匹配搜索,转载请注明出处:http://www.javadx.com/article/785

2019-03-28 00:28

知识点

相关教程

更多

深入理解Magento -前言

深入理解Magento  作者:Alan Storm 翻译:Hailong Zhang 前言  我从2007年开始使用Magento,应该算是国内第一批使用Magento的用户。但是我却从来没有认真研究过Magento,更多的停留在应用层面。虽然也做过一些插件,但也就是依葫芦画瓢而已。偶然间看到 Alan Storm 的一系列关于Magento的文章, 我忍不住的心潮澎湃,相见恨晚。Alan的文章

关于搜索

关于搜索这块(非搜索引擎),了解不多,之前用过的也仅限于数据库查找,不能称之为搜索。近来工作需要,稍微接触了下,了解了些这方面的知识。    1、基于MemCache的搜索      目前基于MemCache的搜索,在B/S系统中比较常用。尤其是很多电子商务类网站,对响应要求较高,多采用此方式。      这其中的主要技术是MemCache。直白的说,就是将数据调用到内存中,然后从内存中读取,从而

深入理解Hadoop集群和网络 PDF

Hadoop主要的任务部署分为3个部分,分别是:Client机器,主节点和从节点。主节点主要负责Hadoop两个关键功能模块HDFS、Map Reduce的监督。当Job Tracker使用Map Reduce进行监控和调度数据的并行处理时,名称节点则负责HDFS监视和调度。从节点负责了机器运行的绝大部分,担当所有数据储存和指令计算的苦差。每个从节点既扮演者数据节点的角色又冲当与他们主节点通信的守

通过对QParser类的继承 实现SOLR 半匹配检索(模糊搜索/模糊检索) (一)

在SOLR应用中,需要支持对指定关键词部分匹配的应用场景 如何实现SOLR的模糊检索(半匹配)? 何谓模糊检索(半匹配): 这种方式是生产环境下经常要使用到的检索方式,通过对命中请求关键词分词后的一个或多个词元的进行检索方式叫做半匹配或模糊匹配,(注意: 这里要与SOLR检索运算符“~” 检索方式区分开)。 如用户输入关键词:战争人,但是索引库里收录只有“战争之人”,这时如果输入: name:战争

通过对QParser类的继承 实现SOLR 半匹配检索(模糊搜索/模糊检索) (一)

在SOLR应用中,需要支持对指定关键词部分匹配的应用场景 如何实现SOLR的模糊检索(半匹配)? 何谓模糊检索(半匹配): 这种方式是生产环境下经常要使用到的检索方式,通过对命中请求关键词分词后的一个或多个词元的进行检索方式叫做半匹配或模糊匹配,(注意: 这里要与SOLR检索运算符“~” 检索方式区分开)。 如用户输入关键词:战争人,但是索引库里收录只有“战争之人”,这时如果输入: name:战争

深入理解Android:卷2.pdf电子书下载

深入理解ANDROID 卷2 PDF的内容摘要:内容简介发售日期: 2012年8月20日 《深入理解Android:卷2》是“深入理解Android”系列的第2本,第1本书上市后获得广大读者高度评价,在Android开发者社群内口口相传。《深入理解

Lucene搜索范围

在搜索程序较为棘手一部分就是搜索范围。 绝大数搜索程序都不能在单台计算机上完成足够数量的数据搜索或并发搜索。 有时候为了避免由于单硬件问题出现导致无法服务,可以运行在多台机器上。 这种设计能够不影响当前搜索程序运行的情况下临时推出一台计算机来进行维护和升级。 搜索范围有两种界定方式: 净处理内容和净查询吞吐量。 如果处理的数据量较大的话必须将这些数据分割成各个小部分,以便让多台分离的计算机分别搜索

Lucene学习笔记之十二:lucene几种搜索方式

lucene几种搜索方式,包括:精确匹配搜索、范围搜索、前缀搜索、通配符搜索、多条件搜索等

垂直搜索

1.<ramBufferSizeMB>32</ramBufferSizeMB>。solrconfig中的这个配置,如果对于过于大型的应用,这个配置必须修改。这是建索引时的设置内存大小。 2.一个商品属于,类别---》子类别--》子子类别 ,想在所有类别中都能查询到该商品。 做法:讲该商品的父子结果查询出来。需要新加入一个索引字段,并构建成 类别id-子类别id-子子类别id

ElasticSearch入门-搜索如此简单

搜索引擎我也不是很熟悉,但是数据库还是比较了解。可以把搜索理解为数据库的like功能的替代品。因为like有以下几点不足: 第一、like的效率不行,在使用like时,一般都用不到索引,除非使用前缀匹配,才能用得上索引。但普通的需求并非前缀匹配。 第二、like的不能做到完全的模糊匹配。比如like '%化痰冲剂%'就不能把”化痰止咳冲剂“搜索出来。但是普通的用户,需求就是这样 第三、like无法

搜索引擎系统

1. 为什么要使用搜索引擎   在我们网站页面最上面的搜索框,目前是使用SQL数据库的模糊查询语句 ( like '%<被搜索的字符串>%') 实现的。这样做的问题是,只能精确匹配用户的输入的字符串。比如我们输入"夏季皮炎治疗方法",搜索不到任何信息,因为数据库里没有包含这个字符串的文章。但是如果我们在百度里用同样的字符串搜索,就可以搜索到相关的页面。  我们如果想

使用 Apache Solr 实现更加灵巧的搜索

Solr 是一种可供企业使用的、基于 Lucene 的搜索服务器,它支持层面搜索、命中醒目显示和多种输出格式。在这篇分两部分的文章中,Lucene Java™ 的提交人 Grant Ingersoll 将介绍 Solr 并向您展示如何轻松地将其表现优异的全文本搜索功能加入到 Web 应用程序中。  一旦用户需要某种信息,就可以立即搜索到这些信息,这种要求再也不是可有可无的了。随着 Google 和

solr多域搜索

近期在开发时候需要将商品按照某些属性归类,lucene是很难做到了,自己开发效率不能够保证,于是想到使用solr。一直认为solr配置比较复杂,使用也不容易上手,网上中文资料极少,将自己的摸索成果记下来,供大家分享。 solr在schema.xml中配置defaultSearchField,即为默认搜索的域,要想在多个域中搜索,需要将这些域复制到同一个域 中,一般就这些域复制到默认搜索的域,在sc

【转载】基于lucene的搜索方案

说是电子商务搜索架构方案,其实就是lucene.net的应用,公司庙小,人少,也就自己平时看看,以前做过一点例子,这样就被拉上去写架构方案了。我这个懒惰的家伙,在网上疯狂的搜集搜索架构方面的东西,因为做做架构,暂时没写代码,每天就看人家博客,结果两个星期了才弄了个大概的草图,这不清明节过后就要详细方案了,现在只能把我的草图分享一下,希望大家板砖伺候,闷在家里鼓捣比较郁闷啊,效率太低。  基于luc

elasticsearch 实现联想输入搜索

通常,在项目中需要联想输入(即输入关键字,提示相关词条,类似百度google的搜索)的需求,可能大家都是用的数据库的like '%关键字%‘来实现。但是这样实现有几个问题。 第一、这样的搜索无论是oracle还是mysql,都是无法使用索引的。在oracle中可能有全文检索可以使用,但是个人感觉效果不是很好。 第二、输入的关键字有like的通病,就是只有保含关键字的词条才会被命中。如果中间加个空格

最新教程

更多

java线程状态详解(6种)

java线程类为:java.lang.Thread,其实现java.lang.Runnable接口。 线程在运行过程中有6种状态,分别如下: NEW:初始状态,线程被构建,但是还没有调用start()方法 RUNNABLE:运行状态,Java线程将操作系统中的就绪和运行两种状态统称为“运行状态” BLOCK:阻塞状态,表示线程阻塞

redis从库只读设置-redis集群管理

默认情况下redis数据库充当slave角色时是只读的不能进行写操作,如果写入,会提示以下错误:READONLY You can't write against a read only slave.  127.0.0.1:6382> set k3 111  (error) READONLY You can't write against a read only slave. 如果你要开启从库

Netty环境配置

netty是一个java事件驱动的网络通信框架,也就是一个jar包,只要在项目里引用即可。

Netty基于流的传输处理

​在TCP/IP的基于流的传输中,接收的数据被存储到套接字接收缓冲器中。不幸的是,基于流的传输的缓冲器不是分组的队列,而是字节的队列。 这意味着,即使将两个消息作为两个独立的数据包发送,操作系统也不会将它们视为两个消息,而只是一组字节(有点悲剧)。 因此,不能保证读的是您在远程定入的行数据

Netty入门实例-使用POJO代替ByteBuf

使用TIME协议的客户端和服务器示例,让它们使用POJO来代替原来的ByteBuf。

Netty入门实例-时间服务器

Netty中服务器和客户端之间最大的和唯一的区别是使用了不同的Bootstrap和Channel实现

Netty入门实例-编写服务器端程序

channelRead()处理程序方法实现如下

Netty开发环境配置

最新版本的Netty 4.x和JDK 1.6及更高版本

电商平台数据库设计

电商平台数据库表设计:商品分类表、商品信息表、品牌表、商品属性表、商品属性扩展表、规格表、规格扩展表

HttpClient 上传文件

我们使用MultipartEntityBuilder创建一个HttpEntity。 当创建构建器时,添加一个二进制体 - 包含将要上传的文件以及一个文本正文。 接下来,使用RequestBuilder创建一个HTTP请求,并分配先前创建的HttpEntity。

MongoDB常用命令

查看当前使用的数据库    > db    test  切换数据库   > use foobar    switched to db foobar  插入文档    > post={"title":"领悟书生","content":"这是一个分享教程的网站","date":new

快速了解MongoDB【基本概念与体系结构】

什么是MongoDB MongoDB is a general purpose, document-based, distributed database built for modern application developers and for the cloud era. MongoDB是一个基于分布式文件存储的数据库。由C++语言编写。旨在为WEB应用提供可扩展的高性能数据存储解决方案。

windows系统安装MongoDB

安装 下载MongoDB的安装包:mongodb-win32-x86_64-2008plus-ssl-3.2.10-signed.msi,按照提示步骤安装即可。 安装完成后,软件会安装在C:\Program Files\MongoDB 目录中 我们要启动的服务程序就是C:\Program Files\MongoDB\Server\3.2\bin目录下的mongod.exe,为了方便我们每次启动,我

Spring boot整合MyBatis-Plus 之二:增删改查

基于上一篇springboot整合MyBatis-Plus之后,实现简单的增删改查 创建实体类 添加表注解TableName和主键注解TableId import com.baomidou.mybatisplus.annotations.TableId;
import com.baomidou.mybatisplus.annotations.TableName;
import com.baom

分布式ID生成器【snowflake雪花算法】

基于snowflake雪花算法分布式ID生成器 snowflake雪花算法分布式ID生成器几大特点: 41bit的时间戳可以支持该算法使用到2082年 10bit的工作机器id可以支持1024台机器 序列号支持1毫秒产生4096个自增序列id 整体上按照时间自增排序 整个分布式系统内不会产生ID碰撞 每秒能够产生26万ID左右 Twitter的 Snowflake分布式ID生成器的JAVA实现方案