如何在Hibernate Search 5.5.2 / Apache Lucene 5.4.x中处理停用词?

停用词,例如[“ a”,“ an”,“ and”,“ are”,“ as”,“ at”,“ be”,“ but”,“ by”,“ for”,“ if”,“在”,“成”,“是”,“它”,“不”,“不”,“的”,“在”,“或”,“这样”,“那个”,“那个”,“他们的” ,“当时”,“那里”,“这些”,“它们”,“此”,“至”,“是”,“将”,“具有”]以及它们在术语或数据库或文件中的存在被lucene索引/搜索可能导致以下任何情况:

  1. 在Lucene索引过程中停止忽略/过滤单词
  2. 在Lucene查询过程中停止忽略/过滤单词
  3. 包含,以任何停用词开头或结尾的查询均无结果

在索引和搜索过程中解决此问题或处理它们的方法如下。 如果您使用的是Hibernate Search 5.5.2,而后者又使用的是Apache Lucene 5.3.x / 5.4.x,则此处说明的方法特别适用。

1.定义自定义分析器,改编自标准分析器

您只需包含两个过滤器-“ LowerCaseFilterFactory”和“ StandardFilterFactory”作为Tokenizer定义的一部分。 我们此处未包括的过滤器工厂是“ StopFilter”。 这样可以将停用词视为其他普通英语词,并将它们编入索引。

@Entity 
@Indexed 
@Table(name="table_name", catalog="catalog_name") 
@AnalyzerDef(name = "FedexTextAnalyzer",tokenizer = @TokenizerDef(factory = StandardTokenizerFactory.class), filters = {@TokenFilterDef(factory = LowerCaseFilterFactory.class),@TokenFilterDef(factory = StandardFilterFactory.class) 
})

2.用相关注释标记字段(@Field上的@Analyzer)

连同每个实体或表的列字段上的@Field批注一起,声明我们上面定义的分析器。

@Column(name="Fedex_cs_product_name", nullable=false, length=100)
@Field(index=Index.YES, analyze=Analyze.YES, store=Store.NO, analyzer=@Analyzer(definition = "FedexTextAnalyzer"))
public String getFedexCsItemName() {return this.FedexCsItemName;
}

3.使用WhitespaceAnalyzer进行查询,以便默认情况下对停用词进行“处理”

尽管官方文档说如果我们通过将Stop Words的参数作为CharArraySet传入来使用“ StandardAnalyzer” EMPTY_SET我发现查询仍然无法检索任何结果。 在与卢克一起进行分析时,我发现对于诸如“面向初学者的计算机科学书籍”之类的查询,“ for”被忽略了。 奇怪! 我用WhitespaceAnalyzer替换了它,发现它适用于所有“停止词”和所有“案例”。

stop_words_01

我发现以上是解决此问题的最佳/最小方法。 此外,我们的质量检查已验证了它适用于所有“停止词”案例! 希望这对您有所帮助。

翻译自: https://www.javacodegeeks.com/2016/04/handle-stop-words-hibernate-search-5-5-2-apache-lucene-5-4-x.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/354472.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Java----前端验证之验证码额实现

验证码是常用的登录验证方式之一,最大的作用就是保证安全,验证码的生成在java中实现的方式有很多种,比如后台生成传输到前端页面,在前台直接生成进行验证,下面写一个最简单实现验证码验证登录的例子. 生成验证码: 验证码验证逻辑: From表单登录: 没错,就这么的简单.在scripts生…

使用Spring Boot隔离集成测试和模拟依赖项

集成测试可能很慢且不可靠,因为它们依赖于系统中过多的组件。 在某种程度上,这是不可避免的:这里的集成测试是为了验证系统的每个部分如何与其他内部或外部组件一起玩。 但是,我们可以通过仅分解所需的依赖关系而不是整个系统来改…

Ubuntu 16.04下使用Wine安装Xshell 4和Xftp 4

说明: 1、使用的Wine版本是深度出品(Deepin),已经精简了很多没用的配置,使启动能非常快,占用资源小。 2、由于Xshell 5的C库无法在这个Wine版本运行,即使升级官方原版的2版本也无法解决&#xf…

电脑缺失MSVCP110.dll文件

安装某软件显示如下错误。 错误: 原因:电脑缺少MSVCP110.dll系统文件。C:\Windows\System32目录下没有此文件。 解决: 下载vcredist_x64直接双击安装,安装完成后就可以继续安装之前安装不了的软件了。。 这里是我下载的&#…

在WildFly的REST Web服务中与Jackson的双向关系

这是使用Jackson的REST Web服务中Java实体之间的双向关系的示例。 假设我们在两个实体Parent和Child之间存在双向关系。 使用MySQL工作台为这两个表生成SQL模式文件。 DROP SCHEMA IF EXISTS bidirectional_schema ; CREATE SCHEMA IF NOT EXISTS bidirectional_schema DEFA…

Postman安装与使用(网络请求神器)--post、get请求

安装 1、Postman最早是作用chrome浏览器插件存在的,所以,你可以到chrome商店搜索下载安装,因为重所周知的原因,所以,大家都会找别人共享的postman插件文件来安装。由于2018年初Chrome停止对Chrome应用程序的支持。 官…

openshift用户管理_OpenShift Express Web管理控制台:入门

openshift用户管理本周, 最新版本的OpenShift为已经很棒的PaaS Cloud提供商带来了两个非常好的功能。 首先,JBoss AS已从7.0升级到7.1,并且所有新的Express Web Management Console已作为预览发布。 在本文中,我们将研究如何使用此…

linux系统搭建ftp服务器--只给某个用户访问其默认目录下的文件

1、环境: window操作系统中安装FlashFXP 软件或xftp; 服务器端的操作系统为centos8; 2、检查安装vsftpd软件 查看所有的安装的软件包 并在结果中查找包含vsftp 的文件 rpm -qa | grep vsftpd如果没有装则使用yum命令安装 yum -y install vsftpd3、创…

Openshift源中的高可用性Drools无状态服务

嗨,大家好! 在这篇博客文章中,我想举一个简单的例子,展示使用Openshift 3(Docker和Kubernetes)扩展Drools Stateless服务有多么容易。 我将展示如何通过按需提供新实例来扩展我们的服务,以及如何…

jpa jsf_完整的Web应用程序Tomcat JSF Primefaces JPA Hibernate –第1部分

jpa jsf我们创建了这篇文章,将展示如何使用以下工具创建完整的Web应用程序:Tomcat7,带有Primefaces的JSF2(Facelets和Libraries)(具有AutoComplete),JPA / Hibernate(具有…

错题

1. 本题考查String对象的声明和赋值方式。C#中没有new String() 这种方式来构造字符串。故选 AC 2. 在CSS中,控制列表样式的属性有:list-style-type,list-style-position,list-style-image,list-style equals比较的是像…

javascript-发布订阅模式

说明:本篇文章转载自小火柴的蓝色理想的一篇博文。原文地址:http://www.cnblogs.com/xiaohuochai/p/8031564.html 发布—订阅模式又叫观察者模式,它定义对象间的一对多的依赖关系,当一个对象的状态发生改变时,所有依赖…

python-列表list和元组tuple

list Python内置的一种数据类型是列表:list。list是一种有序的集合,可以随时添加和删除其中的元素。 比如,列出班里所有同学的名字,就可以用一个list表示: >>> classmates [Michael, Bob, Tracy] >>&g…

jsf表单验证_动态表单,JSF世界期待已久

jsf表单验证新的PrimeFaces扩展版本0.5.0带来了新的DynaForm组件。 通常,如果知道行/列的数量,元素的位置等,则可以通过h:panelGrid或p:panelGrid构建非常简单的表单。 静态表单是正确的。 但是,如果在运行…

转载黑客是如何黑到你手机的?绝对涨姿势,一位黑客的Wi-Fi入侵实录!

声明:这是一虚构的故事,因此对图片均进行了模糊化处理。内容整理自网络! 故事的主人公小黑是一名从事IT相关工作的技术宅男。五一长假来临,宅在家中的他相当无聊,打开手机上的Wi-Fi模块,发现附近有将近10个…

html5——DOM扩展

元素获取 1、document.getElementsByClassName (class) 通过类名获取元素,以类数组形式存在。 2、document.querySelector(‘div’) 通过CSS选择器获取元素,符合匹配条件的第1个元素。 3、document.querySelectorAll(selector) 通过CSS选择器获取元素&am…

JAVA递归实现全排列

全排列(permutation) 排列组合概念 排列,就是指从给定n个数的元素中取出指定m个数的元素,进行排序 组合,则是指从给定n个数的元素中仅仅取出指定m个数的元素,不考虑排序 全排列 以数字为例,全排…

java云端部署_Jelastic Java云端平台

java云端部署谁在Jelastic背后? 那是我的第一个问题,因此我浏览了Jelastic网站。 回答此问题的最佳方法是查看“ Jelastic团队”部分。 创始人,顾问,特殊合作伙伴构成了一支真正的专业团队。 作为特殊的合作伙伴,您会…

Spring Bootstrap中带有配置元数据的高级配置

在简要介绍了配置元数据并涵盖了我之前的文章《 在Spring Boot中使用配置元数据Pimp您的配置》中的基础知识之后,是时候看看如何进一步执行此步骤并进一步自定义配置了。 在本文中,我计划提出对配置属性的弃用,并讨论各种值提供程序&#xff…

windows系统服务器添加ssl证书

一、为域名申请证书 浏览器打开后系在对应版本: https://keymanager.org/ 注册账号: https://freessl.cn/ 安装刚刚下载的软件; 登录进去就可以申请域名的证书了 二、域名解析 解析完后倒回软件那点击“配置完成,检查一下” …