在Java应用程序中实现通配符搜索功能

本文介绍了在Java应用程序中实现通配符搜索功能的方法。通过使用GroupDocs.Search for Java API,开发者可以创建和管理索引,执行简单、布尔、正则表达式和模糊搜索。文中展示了如何使用文本和对象查询进行通配符搜索的代码示例。
摘要由CSDN通过智能技术生成

索引是当今与搜索引擎完全相同的术语,但是根据定义,它是指根据特定架构组织数据。 换句话说,它是使数据和信息更易于呈现和访问的过程。

索引中的数据排列可节省您在信息搜索或检索过程中的时间和精力。 从角度来看,请考虑一本包含数百页的有关空间科学的书。 如果它不包含索引,则您每次希望查看所需信息时都必须搜索整本书。 如果本书有索引,那将是完全不同的情况,您可以打开包含要查找的信息的确切页面。

作为程序员,您可能会遇到在某些类型的文档中进行数据索引的业务需求。 这将需要创建一个复杂的架构,使您不仅可以无缝索引信息,还可以在需要时执行搜索操作。 加上需要在Java平台上执行所有这些操作,您将需要提供以下API:

  • 支持多种格式的文档能够创建多个索引几种搜索功能

GroupDocs.Search for Java是一个独特的索引API,通过提供完善的功能集和灵活的结构来满足上述要求。 它使Java应用程序开发人员可以创建和管理多个索引,并使用各种搜索查询,例如简单,布尔,正则表达式(regex)或模糊搜索。

您可以在Java API中使用混合字符,这有助于您在索引时将连字符(例如连字符)用作有效字母和分隔符。 通配符搜索选项是此API的另一个非常有用的功能。 有两种形式的通配符,单个任意字符或一定范围的通配符任意字符。

以下代码段显示了如何使用文本查询执行通配符搜索: //创建索引 Index index = new Index(Utilities.INDEX_PATH,true); // Adding documents to index index.addToIndex(Utilities.DOCUMENTS_PATH,true); // Searching for words 'affect' or 'effect' in a one document with 'principal', 'principle', 'principles', or 'principally' SearchResults results1 = index.search("?ffect & princip?(2~4)"); // Searching with a single query for phrases 'assure equal opportunities', 'ensure equal opportunities', and 'sure equal opportunities' SearchResults results2 = index.search("\"?(0~2)sure equal opportunities\"");

要使用对象搜索通配符,请参考以下代码片段: //创建索引 Index index = new Index(Utilities.INDEX_PATH,true); // Adding documents to index index.addToIndex(Utilities.DOCUMENTS_PATH, true); // Constructing query 1 // Word 1 in the query is a pattern '?ffect' for wildcard search WordPattern pattert11 = new WordPattern(); pattert11.appendOneCharacterWildcard(); pattert11.appendString("ffect"); SearchQuery subquery11 = SearchQuery.createWordPatternQuery(pattert11); // Word 2 in the query is a pattern 'princip?(2~4)' for wildcard search WordPattern pattert12 = new WordPattern(); pattert12.appendString("princip"); pattert12.appendWildcard(2, 4); SearchQuery subquery12 = SearchQuery.createWordPatternQuery(pattert12); // Creating boolean search query SearchQuery query1 = SearchQuery.createAndQuery(subquery11, subquery12); // Searching with query 1 SearchResults results1 = index.search(query1, new SearchParameters()); // Constructing query 2 // Word 1 in the phrase is a pattern '?(0~2)sure' for wildcard search WordPattern pattert21 = new WordPattern(); pattert21.appendWildcard(0, 2); pattert21.appendString("sure"); SearchQuery subquery21 = SearchQuery.createWordPatternQuery(pattert21); // Word 2 in the phrase is searched with different word forms ('equal', 'equals', 'equally', etc.) SearchQuery subquery22 = SearchQuery.createWordQuery("equal"); subquery22.setSearchParameters(new SearchParameters()); subquery22.getSearchParameters().setUseWordFormsSearch(true); // Word 3 in the phrase is searched with maximum 2 differences of fuzzy search SearchQuery subquery23 = SearchQuery.createWordQuery("opportunities"); subquery23.setSearchParameters(new SearchParameters()); subquery23.getSearchParameters().getFuzzySearch().setEnabled(true); subquery23.getSearchParameters().getFuzzySearch().setFuzzyAlgorithm(new TableDiscreteFunction(2)); // Creating phrase search query SearchQuery query2 = SearchQuery.createPhraseSearchQuery(subquery21, subquery22, subquery23); // Searching with query 2 SearchResults results2 = index.search(query2, new SearchParameters());

Check all available features yourself today – http://bit.ly/2TmhZRO

from: https://dev.to//groupdocs/implementing-wildcard-search-functionality-in-your-java-applications-3jc8

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值