У меня есть длинный список слов, которые я положил в очень простую базу данных SOLR / Lucene. моя цель - найти «похожие» слова из списка для односоставных запросов, где «сходство» определенно понимается как (damerau) levensthein расстояние редактирования. я понимаю, что SOLR обеспечивает такое расстояние для орфографических предложений.
в моем SOLR schema.xml
, я настроил тип поля string
:
<fieldType name="string" class="solr.StrField" sortMissingLast="true" omitNorms="true"/>
который я использую для определения поля
<field name='term' type='string' indexed='true' stored='true' required='true'/>
Я хочу найти это поле и получить результаты, возвращаемые в соответствии с их расстоянием редактирования Левенштейна. тем не менее, когда я запускаю запрос типа webspace~0.1
к SOLR с отладкой и пояснениями, отчет показывает, что при подсчете баллов был использован целый ряд соображений, например: * 10101 *
"1582":"
1.1353534 = (MATCH) sum of:
1.1353534 = (MATCH) weight(term:webpage^0.8148148 in 1581), product of:
0.08618848 = queryWeight(term:webpage^0.8148148), product of:
0.8148148 = boost
13.172914 = idf(docFreq=1, maxDocs=386954)
0.008029869 = queryNorm
13.172914 = (MATCH) fieldWeight(term:webpage in 1581), product of:
1.0 = tf(termFreq(term:webpage)=1)
13.172914 = idf(docFreq=1, maxDocs=386954)
1.0 = fieldNorm(field=term, doc=1581)
ясно, для моего приложения термины частоты, idf
s и т. Д. Не имеют смысла, так как каждый документ содержит только один термин. Я пытался использовать компонент предложений правописания, но не смог заставить его возвращать фактические оценки сходства.
может кто-нибудь дать подсказки, как настроить SOLR для выполнения поиска levensthein / jaro-winkler / n-грамм с возвращенными результатами и без выполнения дополнительных действий, таких как tf
, idf
, boost
и так включено? где-нибудь есть пример конфигурации для SOLR? я нахожу количество вариантов действительно пугающим.