4

非常に単純な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 の必要最小限の構成サンプルはどこかにありますか? オプションの数には本当に圧倒されます。tfidfboost

4

3 に答える 3

7

ナイトリー ビルドを使用している場合は、strdist 関数を使用して、レーベンシュタイン距離に基づいて結果を並べ替えることができます。

q=term:webspace~0.1&sort=strdist("webspace", term, edit) desc

詳細はこちらこちら

于 2010-09-01T18:09:57.943 に答える
2

Solr/Lucene は、このアプリケーションには適していないようです。あなたはおそらくより良いです。SimMetrics ライブラリを使用します。ストリング距離計算機を含む包括的なセットを提供します。ジャロ・ウィンクラー、レーベンスタインなど

于 2010-09-02T01:16:00.007 に答える