Java Code Examples for org.apache.lucene.search.spell.StringDistance
The following examples show how to use
org.apache.lucene.search.spell.StringDistance. These examples are extracted from open source projects.
You can vote up the ones you like or vote down the ones you don't like,
and go to the original project or source file by following the links above each example. You may check out the related API usage on the sidebar.
Example 1
Source Project: lucene-solr Source File: ValueSourceParser.java License: Apache License 2.0 | 6 votes |
@Override public ValueSource parse(FunctionQParser fp) throws SyntaxError { ValueSource str1 = fp.parseValueSource(); ValueSource str2 = fp.parseValueSource(); String distClass = fp.parseArg(); StringDistance dist = null; if (distClass.equalsIgnoreCase("jw")) { dist = new JaroWinklerDistance(); } else if (distClass.equalsIgnoreCase("edit")) { dist = new LevenshteinDistance(); } else if (distClass.equalsIgnoreCase("ngram")) { int ngram = 2; if (fp.hasMoreArguments()) { ngram = fp.parseInt(); } dist = new NGramDistance(ngram); } else { dist = fp.req.getCore().getResourceLoader().newInstance(distClass, StringDistance.class); } return new StringDistanceFunction(str1, str2, dist); }
Example 2
Source Project: lucene-solr Source File: ConjunctionSolrSpellChecker.java License: Apache License 2.0 | 5 votes |
@Override protected StringDistance getStringDistance() { if (stringDistance == null) { return super.getStringDistance(); } return stringDistance; }
Example 3
Source Project: lucene-solr Source File: ConjunctionSolrSpellCheckerTest.java License: Apache License 2.0 | 5 votes |
@Test public void test() throws Exception { ConjunctionSolrSpellChecker cssc = new ConjunctionSolrSpellChecker(); @SuppressWarnings("unchecked") Class<StringDistance> sameDistance = (Class<StringDistance>) AVAILABLE_DISTANCES[random().nextInt(AVAILABLE_DISTANCES.length)]; StringDistance sameDistance1 = sameDistance.getConstructor().newInstance(); StringDistance sameDistance2 = sameDistance.getConstructor().newInstance(); //NGramDistance defaults to 2, so we'll try 3 or 4 to ensure we have one that is not-equal. StringDistance differentDistance = new NGramDistance(3); if(sameDistance1.equals(differentDistance)) { differentDistance = new NGramDistance(4); if(sameDistance1.equals(differentDistance)) { fail("Cannot set up test. 2 NGramDistances with different gram sizes should not be equal."); } } Assert.assertEquals("The distance " + sameDistance + " does not properly implement equals.", sameDistance1, sameDistance2); MockSolrSpellChecker checker1 = new MockSolrSpellChecker(sameDistance1); MockSolrSpellChecker checker2 = new MockSolrSpellChecker(sameDistance2); MockSolrSpellChecker checker3 = new MockSolrSpellChecker(differentDistance); cssc.addChecker(checker1); cssc.addChecker(checker2); expectThrows(IllegalArgumentException.class, () -> cssc.addChecker(checker3)); }
Example 4
Source Project: lucene-solr Source File: IndexBasedSpellCheckerTest.java License: Apache License 2.0 | 5 votes |
@Test @SuppressWarnings({"unchecked"}) public void testAlternateDistance() throws Exception { TestSpellChecker checker = new TestSpellChecker(); @SuppressWarnings({"rawtypes"}) NamedList spellchecker = new NamedList(); spellchecker.add("classname", IndexBasedSpellChecker.class.getName()); File indexDir = createTempDir().toFile(); spellchecker.add(AbstractLuceneSpellChecker.INDEX_DIR, indexDir.getAbsolutePath()); spellchecker.add(AbstractLuceneSpellChecker.FIELD, "title"); spellchecker.add(AbstractLuceneSpellChecker.SPELLCHECKER_ARG_NAME, spellchecker); spellchecker.add(AbstractLuceneSpellChecker.STRING_DISTANCE, JaroWinklerDistance.class.getName()); SolrCore core = h.getCore(); String dictName = checker.init(spellchecker, core); assertTrue(dictName + " is not equal to " + SolrSpellChecker.DEFAULT_DICTIONARY_NAME, dictName.equals(SolrSpellChecker.DEFAULT_DICTIONARY_NAME) == true); h.getCore().withSearcher(searcher -> { checker.build(core, searcher); SpellChecker sc = checker.getSpellChecker(); assertTrue("sc is null and it shouldn't be", sc != null); StringDistance sd = sc.getStringDistance(); assertTrue("sd is null and it shouldn't be", sd != null); assertTrue("sd is not an instance of " + JaroWinklerDistance.class.getName(), sd instanceof JaroWinklerDistance); return null; }); }
Example 5
Source Project: Elasticsearch Source File: DirectSpellcheckerSettings.java License: Apache License 2.0 | 4 votes |
public StringDistance stringDistance() { return stringDistance; }
Example 6
Source Project: Elasticsearch Source File: DirectSpellcheckerSettings.java License: Apache License 2.0 | 4 votes |
public void stringDistance(StringDistance distance) { this.stringDistance = distance; }
Example 7
Source Project: lucene-solr Source File: SolrSpellChecker.java License: Apache License 2.0 | 4 votes |
/** * Get the distance implementation used by this spellchecker, or NULL if not applicable. */ protected StringDistance getStringDistance() { throw new UnsupportedOperationException(); }
Example 8
Source Project: lucene-solr Source File: DirectSolrSpellChecker.java License: Apache License 2.0 | 4 votes |
@Override @SuppressWarnings({"unchecked"}) public String init(@SuppressWarnings({"rawtypes"})NamedList config, SolrCore core) { SolrParams params = config.toSolrParams(); log.info("init: {}", config); String name = super.init(config, core); Comparator<SuggestWord> comp = SuggestWordQueue.DEFAULT_COMPARATOR; String compClass = (String) config.get(COMPARATOR_CLASS); if (compClass != null) { if (compClass.equalsIgnoreCase(SCORE_COMP)) comp = SuggestWordQueue.DEFAULT_COMPARATOR; else if (compClass.equalsIgnoreCase(FREQ_COMP)) comp = new SuggestWordFrequencyComparator(); else //must be a FQCN comp = (Comparator<SuggestWord>) core.getResourceLoader().newInstance(compClass, Comparator.class); } StringDistance sd = DirectSpellChecker.INTERNAL_LEVENSHTEIN; String distClass = (String) config.get(STRING_DISTANCE); if (distClass != null && !distClass.equalsIgnoreCase(INTERNAL_DISTANCE)) sd = core.getResourceLoader().newInstance(distClass, StringDistance.class); float minAccuracy = DEFAULT_ACCURACY; Float accuracy = params.getFloat(ACCURACY); if (accuracy != null) minAccuracy = accuracy; int maxEdits = DEFAULT_MAXEDITS; Integer edits = params.getInt(MAXEDITS); if (edits != null) maxEdits = edits; int minPrefix = DEFAULT_MINPREFIX; Integer prefix = params.getInt(MINPREFIX); if (prefix != null) minPrefix = prefix; int maxInspections = DEFAULT_MAXINSPECTIONS; Integer inspections = params.getInt(MAXINSPECTIONS); if (inspections != null) maxInspections = inspections; float minThreshold = DEFAULT_THRESHOLD_TOKEN_FREQUENCY; Float threshold = params.getFloat(THRESHOLD_TOKEN_FREQUENCY); if (threshold != null) minThreshold = threshold; int minQueryLength = DEFAULT_MINQUERYLENGTH; Integer queryLength = params.getInt(MINQUERYLENGTH); if (queryLength != null) minQueryLength = queryLength; int maxQueryLength = DEFAULT_MAXQUERYLENGTH; Integer overriddenMaxQueryLength = params.getInt(MAXQUERYLENGTH); if (overriddenMaxQueryLength != null) maxQueryLength = overriddenMaxQueryLength; float maxQueryFrequency = DEFAULT_MAXQUERYFREQUENCY; Float queryFreq = params.getFloat(MAXQUERYFREQUENCY); if (queryFreq != null) maxQueryFrequency = queryFreq; checker.setComparator(comp); checker.setDistance(sd); checker.setMaxEdits(maxEdits); checker.setMinPrefix(minPrefix); checker.setAccuracy(minAccuracy); checker.setThresholdFrequency(minThreshold); checker.setMaxInspections(maxInspections); checker.setMinQueryLength(minQueryLength); checker.setMaxQueryLength(maxQueryLength); checker.setMaxQueryFrequency(maxQueryFrequency); checker.setLowerCaseTerms(false); return name; }
Example 9
Source Project: lucene-solr Source File: DirectSolrSpellChecker.java License: Apache License 2.0 | 4 votes |
@Override public StringDistance getStringDistance() { return checker.getDistance(); }
Example 10
Source Project: lucene-solr Source File: AbstractLuceneSpellChecker.java License: Apache License 2.0 | 4 votes |
@Override public StringDistance getStringDistance() { return sd; }
Example 11
Source Project: lucene-solr Source File: ConjunctionSolrSpellCheckerTest.java License: Apache License 2.0 | 4 votes |
MockSolrSpellChecker(StringDistance sd) { this.sd = sd; }
Example 12
Source Project: lucene-solr Source File: ConjunctionSolrSpellCheckerTest.java License: Apache License 2.0 | 4 votes |
@Override protected StringDistance getStringDistance() { return sd; }
Example 13
Source Project: lucene-solr Source File: StringDistanceFunction.java License: Apache License 2.0 | 3 votes |
public StringDistanceFunction(ValueSource str1, ValueSource str2, StringDistance measure) { this.str1 = str1; this.str2 = str2; dist = measure; }