The following example demonstrates how to implement a custom word forms provider.
```
public class SimpleWordFormsProvider implements IWordFormsProvider {
public final String[] getWordForms(String word) {
ArrayList result = new ArrayList();
// Assume that the input word is in the plural, then we add the singular
if (word.length() > 2 &&
word.toLowerCase().endsWith("es")) {
result.add(word.substring(0, word.length() - 2));
}
if (word.length() > 1 &&
word.toLowerCase().endsWith("s")) {
result.add(word.substring(0, word.length() - 1));
}
// Then assume that the input word is in the singular, we add the plural
if (word.length() > 1 &&
word.toLowerCase().endsWith("y")) {
result.add(word.substring(0, word.length() - 1).concat("is"));
}
result.add(word.concat("s"));
result.add(word.concat("es"));
// All rules are implemented in the EnglishWordFormsProvider class
return result.toArray(new String[0]);
}
}
```
The next example demonstrates how to set a custom word forms provider for using.
```
String indexFolder = "c:\\MyIndex\\";
String documentsFolder = "c:\\MyDocuments\\";
// Creating an index in the specified folder
Index index = new Index(indexFolder);
// Indexing documents from the specified folder
index.add(documentsFolder);
// Setting the custom word forms provider instance
index.getDictionaries().setWordFormsProvider(new SimpleWordFormsProvider());
// Creating a search options instance
SearchOptions options = new SearchOptions();
options.setUseWordFormsSearch(true); // Enabling search for word forms
// Searching in the index
SearchResult result = index.search("relative", options);
// The following words can be found:
// relative
// relatives
```
public abstract String[] getWordForms(String word)
Gets the word forms for the specified word. The resulting array does not contain the original word.
Parameters:
Parameter
Type
Description
word
java.lang.String
The word to suggest the word forms.
Returns:
java.lang.String[] - The word forms for the specified word or empty array if the IWordFormsProvider does not provide word forms for the specified word.
Was this page helpful?
Any additional feedback you'd like to share with us?
Please tell us how we can improve this page.
Thank you for your feedback!
We value your opinion. Your feedback will help us improve our documentation.