問題タブ [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.
lucene - Lucene.net検索で提供されたすべての単語のあいまい検索を実行するにはどうすればよいですか?
私は自分のサイトに実装するためにLucene.Netを自分自身に教えようとしています。1つの問題を除いて、必要なほとんどすべてのことを行う方法を理解しています。検索文字列内のすべての検索語をあいまい検索できるようにする方法を見つけようとしています。
たとえば、文字列が含まれるドキュメントがある場合、それを一致さThe big red fox
せようとしています。bag fix
~
問題は、あいまい検索を実行するために、ユーザーが入力するすべての検索用語に追加する必要があるようです。私はこれについて行くための最良の方法がわかりません。今私はこれを試みています
最初の置換は、検索文字列にすでに例外がある場合にLucene.Netが例外をスローするためであり~
、明らかに~~
フレーズで処理できません。この方法は機能しますが、ファジーウェイト値を追加し始めると面倒になるようです。
あいまいさを許容するためにすべての単語をデフォルトにするより良い方法はありますか?
lucene - 検索クエリで複数の単語に対してあいまい検索を実行すると、Lucene.net 検索が失敗するのはなぜですか?
私のアプリケーションには、名前フィールドが の Company があり、This is a test
Lucene.Net によって正しくインデックス化されています。参考までに、 myMultiFieldQueryParser
のデフォルトの演算子は に設定されていますQueryParser.Operator.AND
。
と を検索するthis test~
と、検索に合格しthis tst~
ます。this~ test~
ただし、 、thas~ test~
、thas test~
、およびその他のバリエーションを検索しようとすると、検索に失敗します。
この全体的な目的は、ユーザーが検索のスペルを少し間違えることを許可することです。そのため、ユーザーが検索しJon Doe
ても の結果が表示されJohn Doe
、ユーザーがデータベースに入力したものの正確なスペルを思い出せなくなります。残念ながら、検索フレーズの最後の用語に対するあいまい検索のみが許可されているようです。何か間違ったことをしていますか、それとも別のアナライザー全体を使用する必要がありますか?
c# - C#で10万以上の文字列を高速で動的にファジー検索
テキストボックスに入力された、事前に読み込まれた銘柄記号であるとしましょう。インストールするライブラリではなく、コピーできるコードを探しています。
これはこの質問に触発されました:
C#用に作成されたあいまい検索または文字列類似関数ライブラリはありますか?
レーベンシュタイン距離アルゴリズムはうまく機能しているようですが、計算には時間がかかります。ユーザーが余分な文字を入力したときにクエリを再実行する必要があるという事実に関する最適化はありますか?各入力の上位10件の一致を表示することに興味があります。
ruby - Rubyでファジー部分文字列マッチングを行うにはどうすればよいですか?
あいまい一致に関する多くのリンクを見つけ、ある文字列を別の文字列と比較して、どれが最も高い類似度スコアを取得するかを確認しました。
ドキュメントである 1 つの非常に長い文字列と部分文字列があります。部分文字列は元のドキュメントから取得されたものですが、何度か変換されているため、スペースやダッシュなどの奇妙なアーティファクトが導入されている可能性があります。部分文字列は、元のドキュメントのテキストのセクションと 99% 以上一致します。この文字列がどのドキュメントからのものかを確認するために一致していません。文字列が始まるドキュメント内のインデックスを見つけようとしています。
ランダム エラーが発生しなかったために文字列が同一である場合は、 を使用document.index(substring)
しますが、文字の違いが 1 つでもあると失敗します。
文字列と部分文字列の両方で az を除くすべての文字を削除し、比較してから、文字列を圧縮したときに生成したインデックスを使用して、圧縮された文字列のインデックスを実際のドキュメントのインデックスに変換することで、違いが説明されると思いました. これは、違いが空白と句読点である場合はうまく機能しましたが、1文字が異なるとすぐに失敗しました.
ドキュメントは通常、数ページから 100 ページであり、部分文字列は数文から数ページです。
c# - この Lucene.Net クエリが失敗するのはなぜですか?
検索機能を変換して、複数の単語を含むあいまい検索を許可しようとしています。私の既存の検索コードは次のようになります。
これは正しく機能し、「My name is Andrew」という名前フィールドを持つエンティティがあり、「Andrew Name」の検索を実行すると、Lucene は正しいドキュメントを正しく見つけます。「Anderw Name」が正しく見つかるように、あいまい検索を有効にしたいと思います。次のコードを使用するようにメソッドを変更しました。
残念ながら、このコードを使用して検索クエリ「Andrew Name」を送信すると (前と同じ)、結果が返されません。
核となる考え方は、すべての用語が少なくとも 1 つのドキュメント フィールドに存在する必要があるということですが、各用語は異なるフィールドに存在することができます。書き換えられたクエリが失敗する理由を誰かが知っていますか?
最終編集:わかりました、私はこれをかなり複雑にしすぎていたことがわかりました.最初のアプローチから変更する必要はありませんでした. 最初のコード スニペットに戻った後、変更してあいまい検索を有効にしました。
に
lucene - Solr サーバー側クエリの前処理
solr であいまい検索を実行し、クエリをサブワードとして検索する必要があります。完全な単語の一致が優先されます。
これは、次のクエリでうまく機能します。
http://localhost:8983/solr/select?qt=my_qt&q=*myword*~0.8+myword~0.8
�</p>
リクエスト内のすべてのワイルドカードとファジー パラメータを削除する可能性はありますか。
次のクエリを受け取ったときに、上記のクエリと同じ検索を行うように solr を構成したいと思います。
私はsolrconf.xmlのreqeustHandlerに次のようなものを追加しました
(これは動作しません)
iphone - レキシコンを解析し、ワイルドカードを使用して大量の一致を表示するための最良の方法は何ですか
私の問題は、約20万語程度の語彙を持っていることです。ファイルのサイズは1.8MBです。ユーザーからの入力、たとえば** idが必要であり、可能なすべての一致を表示したいと思います。ここで、*は任意の文字AZにすることができます。(言った、メイドなど)
これを行うための最も効率的な方法に関するいくつかの提案を探しています。ユーザーがより具体的な文字を追加し、単語の一致をライブで更新できるようにするためです。
私の考えはRegexKitLiteを使おうと思ったのですが、信じられないほど遅い気がします。
ご入力いただきありがとうございます。
編集:これを達成するためにNSPredicatesを使用することは可能だと思いますか?
algorithm - データベースに保存されている英語の文のセットと英語の文のあいまい一致
データベーステーブルには約1000のレコードがあります。title
記事のタイトルを格納するために使用されるという名前の列があります。レコードを挿入する前に、同じタイトルの記事がそのテーブルにすでに存在するかどうかを確認する必要があります。もしそうなら、私はスキップします。
この種のあいまいマッチングを実行するための最速の方法は何ですか?文中のすべての単語が英語の辞書にあると仮定します。文#1の単語の70%が文#2で見つかった場合、それらは一致すると見なされます。理想的には、アルゴリズムは各文の値を事前に計算して、値をデータベースに保存できるようにすることができます。
ruby-on-rails - 軽量Rails検索エンジン
Railsで軽量の検索エンジンを探しています。全文検索などを行うためのものではなく、単純なオートコンプリートテキストボックスを使用しています。基本的に、文字列が与えられた場合、テーブル内の2つの文字列列を検索し、最も関連性の高い結果を返すために必要です。
多くのSQLLIKEステートメントなどを使用して、自分で検索アルゴリズムを実行することを考えましたが、エントリの重み付けや単語が欠落している場合にどうなるかについて話すと、少し面倒になります。あいまい検索もいいでしょう。私はいくつかのグーグルをやろうとしましたが、それはほとんど私にスフィンクスのようなもの(私は思う)がやり過ぎであるということを与えました。
私が説明したことを実行できる簡単な検索エンジンについて何か提案はありますか?または、カスタムエンジンを常に改善しています。
ありがとう!
PS私は本のタイトルと著者を自動入力していることに注意するのが役立つかもしれないと思ったので、ユーザーは検索フィールドに何を入力するかについてかなり良い考えを持っています。
mysql - QuicksilverのようなmySQLの文字列ランキングアルゴリズム
mySQLの文字列ランキングアルゴリズム
クイックシルバースコアリングアルゴリズム
PHPポート
Javascriptポート
MySqlポート(ああリンクなし)それは私の問題です読み続けてください
使用例:
さて、私の質問はここにあります。これらは素晴らしいです、そしてそれを可能にしてくれた人々に感謝します!私はこれを行うためのmysqlの方法が大好きです。データベースは私の専門分野ではありませんが、MySQLだけでこれを実行したい場合、どのように実行しますか?そして、私は、より良い方法がありますか?。
これについての私の考えはそうです。
実際の例:
データベースに14000以上のレコードがあります。医療コードと説明が記載された「 ICD9 」医療コードの表。
テーブル:
ICD9_codes
フィールド:
コード
code_text
php関数に対してjQueryajax呼び出しを行っています。
これは機能し、それで問題ありません。しかし、私の本当の心の願いは、スコアリングアルゴリズムを使用することです!
今、私が間違っていて、私は非常にうまくいく可能性がある場合は私を訂正してください。そうすれば私はショックを受けるでしょう:)
14000以上のレコードを検索するのは非常に費用のかかるプロセスだと思います。(最小値が2文字の場合でも)jQueryオートコンプリートを使用します。(そして、私が「データベースは私の専門分野ではない」と言ったので、それは一部の人にはうまくいかないかもしれません)
これが私が知りたいことです。MySQLを知っていて、同等のMySQL関数スコアを作成することは誰かの時間の価値がありますか?
アイデアの長所または短所があれば、聞いてみたいですか?またはより良い方法を知っています:)
長所:
- MySQLが検索アルゴリズムを持つためのネイティブな方法
短所:
- データベースを制御できない場合、mysql関数score()を追加できません(これにより、phpまたはjavascriptで以前の場所に移動できます)
この時点でそこに滑り込むでしょう(Stackoverflowは素晴らしい!!!素晴らしいコミュニティです!)ありがとう、ダスティン