索引是当今与搜索引擎完全相同的术语,但是根据定义,它是指根据特定架构组织数据。 换句话说,它是使数据和信息更易于呈现和访问的过程。
索引中的数据排列可节省您在信息搜索或检索过程中的时间和精力。 从角度来看,请考虑一本包含数百页的有关空间科学的书。 如果它不包含索引,则您每次希望查看所需信息时都必须搜索整本书。 如果本书有索引,那将是完全不同的情况,您可以打开包含要查找的信息的确切页面。
作为程序员,您可能会遇到在某些类型的文档中进行数据索引的业务需求。 这将需要创建一个复杂的架构,使您不仅可以无缝索引信息,还可以在需要时执行搜索操作。 加上需要在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