Character replacements define how the text of documents is divided into terms. Therefore, the character replacement dictionary and the use_character_replacements setting of an index can be changed only while the index contains no documents and is not performing an operation; otherwise, a change raises RuntimeError. A call that does not change the content of the dictionary is allowed. Configure character replacements after creating a new index and before adding documents. See also the Index format and compatibility page.
The count property allows you to get the number of character replacements defined in the dictionary.
To add character replacements to the dictionary, use the add_range method. It takes a list of CharacterReplacementPair objects, or of (character, replacement) tuples. A pair can be created from two one-character strings or from two Unicode code points (int values); the latter allows you to define replacements for characters outside the Basic Multilingual Plane. A replacement added for a character that already has one replaces the previous replacement. A pair whose replacement is the same as the character removes the replacement of the character.
To remove character replacements from the dictionary, the remove_range method is used. The characters can be specified as one-character strings or as Unicode code points.
The contains method is used to determine if the dictionary contains a replacement for the specified character. The character is specified as a Unicode code point, for example ord("-").
To get a replacement for the specified character, use the get_replacement method, which also takes the Unicode code point of the character. The method returns the Unicode code point of the replacement, or the specified character itself if the dictionary contains no replacement for it.
To remove all replacements from the dictionary, use the clear method.
To export all replacements to a file, use the export_dictionary method.
To import character replacements from a file, use the import_dictionary method. Errors of exporting and importing are reported by the error_occurred event of the index instead of exceptions.
The following example demonstrates the use of the character replacement dictionary methods.
fromgroupdocs.searchimportIndex,IndexSettingsfromgroupdocs.search.dictionariesimportCharacterReplacementPair# Creating an index settings instancesettings=IndexSettings()settings.use_character_replacements=True# Enabling character replacements during indexing# Creating a new index in the specified folder; the dictionary can be changed only while the index contains no documentsindex=Index("./index",settings,True)replacements=index.dictionaries.character_replacementsifreplacements.contains(ord("-")):# Getting the replacement for the hyphen characterreplacement=replacements.get_replacement(ord("-"))print("The replacement for hyphen is "+chr(replacement))# Deleting the hyphen character replacement from the dictionaryreplacements.remove_range(["-"])ifreplacements.count>0:# Deleting all character replacements from the dictionaryreplacements.clear()# Adding character replacements to the dictionarypairs=[CharacterReplacementPair("Ä","a"),CharacterReplacementPair("ä","a"),CharacterReplacementPair(0x1D400,0x0061),# Mathematical bold capital A is replaced with the small letter a]replacements.add_range(pairs)# Exporting character replacements to a filereplacements.export_dictionary("./CharacterReplacements.dat")# Importing character replacements from a filereplacements.import_dictionary("./CharacterReplacements.dat")print("Character replacements:",replacements.count)print("The replacement for Ä is "+chr(replacements.get_replacement(ord("Ä"))))# Indexing documents; after that, the character replacements of the index cannot be changedindex.add("./documents")