問題タブ [fuzzy-search]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
sql-server - 数値サイズと材料タイプの一般的な説明を含む材料説明のあいまい検索
私たちは、電気材料データベース (コンジット、ケーブルなど) のファジー検索を提供しようとしています。問題は、すべての素材タイプに一貫性がないため、テキストの説明とは別のフィールドにサイズを分割できなかったことです。一部の素材はサイズ以外で評価されているためです。
全文検索とレーベンシュタイン検索アルゴリズムの SQL CLR 実装を組み合わせて (ランキングを支援するために) 試みましたが、私の結果は少しおかしなものです (つまり、ランキングが不適切なため、正しくソートされていません)。
たとえば、検索用語が "3/4" ABCD Conduit" の場合、次の順序でいくつかの無関係な結果が返される可能性があります。
1/2" コンジット 1/4" X 3/4" ケーブル 1/4" ケーブルタイ 3/4" DFC コンジットティー 3/4" ABCD コンジット 3/4" コンジット
私は、これら 2 つの検索アルゴリズムが句読点と数字の関連性を考慮していないという事実に問題を突き止めたと思います。つまり、このような検索では、説明の残りのあいまい一致よりもサイズが優先されると思いますが、結果にはそれが反映されていません。
私の質問は次のとおりです。英数字と句読点の組み合わせを検索するのにより適した、より優れた検索アルゴリズムまたは別のアプローチを推奨できる人はいますか?
lucene - 正確な編集距離で Lucene を検索
編集距離で Lucene インデックスを検索したいと思います。たとえば、フィールド FIRST_NAME を持つドキュメントがあるとします。たとえば、'john' から 1 編集距離離れた名前のすべてのドキュメントが必要です。
Lucene はあいまい検索 (FIRST_NAME:john~) をサポートしており、あいまいさを制御するために 0 から 1 までの数値を取ることを知っています。(私にとって) 問題は、この数値が編集距離に直接変換されないことです。また、ドキュメント内の値が短い文字列 (3 文字未満) の場合、あいまい検索ではそれらを見つけるのが困難です。たとえば、FIRST_NAME が「J」のドキュメントがあり、FIRST_NAME:I~0.0 を検索すると、何も返されません。
string - データベースからあいまいな文字列の一致を非常に高速に取得する
私は〜150'000単語とパターン(任意の単語)のデータベースを持っており、それとパターンの間のDamerau-Levenshtein距離が指定された数よりも小さいデータベースからすべての単語を取得したいと考えています。私はそれを非常に速くする必要があります。どのアルゴリズムを提案できますか? Damerau-Levenshtein 距離の適切なアルゴリズムがない場合は、Levenshtin 距離だけでも問題ありません。
ご協力ありがとうございました。
PS SOUNDEX は使用しません。
python - 良いdjango検索アプリ?— Haystackであいまい検索を実行する方法は?
現在、バックエンドとしてapache-solrを使用してdjango-haystackを使用しています。
問題は、探している検索機能をアプリで実行できないことです。
単語内のサブパーツを検索する
例えば。「buntu」を検索しても「ubuntu」は表示されません
類似の単語を検索する
例えば。「ubuntu」を検索すると「ubuntu」が表示されます
どんな助けでも大歓迎です。
r - Rでファジー/近似文字列マッチングを使用して2つのデータフレームをマージする
説明
マージする必要がある情報を含む 2 つのデータセットがあります。私が持っている唯一の共通フィールドは、完全に一致しない文字列と、実質的に異なる可能性がある数値フィールドです
問題を説明する唯一の方法は、データを示すことです。ここにa.csvとb.csvがあります。BをAにマージしようとしています。
B には 3 つのフィールドがあり、A には 4 つのフィールドがあります。会社名 (ファイル A のみ)、ファンド名、資産クラス、および資産です。これまでのところ、私の焦点は、単語または文字列の一部を置き換えて完全に一致するものを作成し、次に使用することによってファンド名を一致させることでした。
ただし、これでは約 30% の一致しか得られません。残りは私が手作業で行う必要があります。
資産は数値フィールドであり、どちらも常に正しいとは限らず、ファンドの資産が少ない場合は大幅に変動する可能性があります。資産クラスは、両方のファイルで「一般的に」同じ文字列フィールドですが、相違点があります。
複雑さを増しているのは、ファイル B のさまざまな一連の資金です。たとえば、次のようになります。
AGF カナディアン バリュー
AGF カナディアン バリュー-D
この場合、シリーズ化されていないものを選ぶか、「A」「-A」「Advisor」などと呼ばれるものをマッチとして選ばなければなりません。
質問
最善のアプローチは何だと思いますか? この演習は毎月行う必要があり、手動で一致させるには非常に時間がかかります。コードの例は役に立ちます。
アイデア
私がうまくいくと思う方法の 1 つは、文字列内の各単語の最初の大文字に基づいて文字列を正規化することです。しかし、Rを使用してそれを実現する方法を理解できませんでした.
私が検討したもう 1 つの方法は、資産、ファンド名、資産クラス、および会社の組み合わせに基づいて一致のインデックスを作成することでした。しかし、繰り返しになりますが、Rでこれを行う方法がわかりません。または、それが可能かどうかさえわかりません。
コードの例、コメント、考え、方向性は大歓迎です!
sql - pg_trgmを使用したPostgresの類似関数
Postgresの類似性関数を使用してあいまいテキストマッチングを実行しようとしていますが、使用しようとするとエラーが発生します。
テキストに明示的なキャストを追加すると、エラーが発生します。
私の質問は:
pg_trgmを初期化するために何かをする必要がありますか?
regex - ファジー正規表現
私の仕事では、ダメラウ・レーベンシュタイン距離などの近似文字列マッチングアルゴリズムを使用して、コードがスペルミスの影響を受けにくくするという素晴らしい結果が得られました。
ここで、文字列をのような単純な正規表現と照合する必要がありますTV Schedule for \d\d (Jan|Feb|Mar|...)
。これは、文字列TV Schedule for 10 Jan
が0をT Schedule for 10. Jan
返し、2を返す必要があることを意味します。
これは、正規表現(この場合は100x12)ですべての文字列を生成し、最適な文字列を見つけることで実行できますが、実用的ではありません。
これを効果的に行う方法について何かアイデアはありますか?
lucene - 一言ではなくフレーズでのLuceneあいまい一致
Apache Luceneを使用して、フレーズ「Grand Prarie」(意図的にスペルミス)であいまい一致を実行しようとしています。私の問題の一部は、~
オペレーターが単一の単語の用語に対してのみあいまい一致を行い、フレーズの近接一致として動作することです。
Luceneを使用したフレーズであいまい一致を行う方法はありますか?
lucene - Lucene クエリ: bla~* (ファジーで始まる単語に一致)、どのように?
Lucene クエリ構文では、* と ~ を次のような有効なクエリに結合したいと思います: bla~* //invalid query
意味:「bla」または「bla」に似たもので始まる単語を一致させてください。
更新:私が今行っていることは、小さな入力で機能し、次を使用することです(SOLRスキーマのスニペット):
SOLR を使用しない場合、これは次のことを行います。
Indextime : 私の (短い) 入力のすべてのプレフィックスを含むフィールドを作成して、データにインデックスを付けます。
Searchtime : プレフィックスはインデックスに明示的に存在するため、~ 演算子のみを使用します。