非常に単純なSOLR / Luceneデータベースに入れた単語の長いリストがあります。私の目標は、単一用語クエリのリストから「類似した」単語を見つけることです。ここで、「類似性」は特に (damerau) levensthein 編集距離として理解されます。私はSOLRがスペルの提案にそのような距離を提供することを理解しています.
私のSOLRschema.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に対してクエリを実行すると、レポートには、スコアの計算にさまざまな考慮事項が含まれていることが示されます。
"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 などは無意味です。スペル候補コンポーネントを使用しようとしましたが、実際の類似度スコアを返すようにできませんでした。
スコアが返され、 、、などの追加の操作を行わずに levensthein / jaro-winkler / n-gram 検索を実行するように SOLR を構成する方法のヒントを誰でも提供できますか? SOLR の必要最小限の構成サンプルはどこかにありますか? オプションの数には本当に圧倒されます。tf
idf
boost