問題タブ [relevance]

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.

0 投票する
2 に答える
4709 参照

magento - Magento 検索エンジンの関連性の問題

現在、大規模な在庫を持つ Magento Web サイトを所有しており、ON SITE 検索結果の関連性に問題があります。現在、「like と fulltext を組み合わせる」ように設定されていますが、結果は期待したものではありません。たとえば、「リー チャイルド」(著者) を検索すると、リー チャイルドの本が 3 冊、次に著者が「ローレン チャイルド」の本が 3 冊、残りのリー チャイルドの本が表示されます。

したがって、基本的には、全文検索を優先して、類似検索結果の前にそれらの結果を表示したいと考えています。また、在庫切れ商品の前に在庫商品を表示したい。

私たちにはテストサーバーがあり、現時点でmagentoが検索クエリを分割し、少なくとも1つの単語を持つ製品を表示すると述べたフォーラムの投稿を読みました.

Mage_CatalogSearch_Model_Mysql4_Fulltext の 342 行目 (CE1.4.2 用) を変更しました。

「OR」を「AND」に変更します`

道:app/code/core/Mage/CatalogSearch/Model/Mysql4/Fulltext.php

これは以前のエディションの修正であり、現在 1.5.0.1 を実行しています。

Magento の検索結果の関連性をいじるのに欠けているものはありますか、それともコードの正しい方向を教えてもらえますか?

0 投票する
3 に答える
4061 参照

mysql - mysql検索結果を関連性でソートする方法は?

私はこの質問で尋ねられたのと同様の質問があります

MySQL-関連性で注文する方法は?INNODBテーブル

違いは、ここでは5つのフィールドから検索したいです。

add1、add2、add3、post_town、post_code

また、post_codeフィールドのレコードのみが空ではなくなり、他のフィールドのレコードは場所によっては空になる場合があります。キーワードkingstonを検索すると、

これらの結果は、add1、add2、add3、post_town、post_codeのすべてのフィールドの組み合わせです。

この結果は次の順序で必要です

私の現在のSQLクエリは次のようなものです

したがって、検索キーワードが最初に来るレコードが最初に来る必要があります。どうやってやるの ?

0 投票する
2 に答える
2256 参照

php - MySQL: MySQL 関連検索を使用した特殊な検索アルゴリズム

ユーザーがフィールドを 1 つしか持たない MySQL で検索を実行しようとしています。テーブルは次のようになります。

ここで、ユーザーが だけを入力した場合blah blubber、検索では、フィールドTITLEDESCRIOTIONFILENAMEまたはにすべての単語が表示されるかどうかを確認する必要がありますTAGS。結果自体は関連性によって並べ替える必要があるため、文字列がレコードに表示される頻度。このサンプルデータを取得しました:

この例では、ID 2 が一番上 (2x blah、1x blubber)、次に 1 (2x blah )、3 (1x blah) である必要があります。ユーザーがより多くの単語を入力できるように、このプロセスは動的である必要があり、関連性は 1 つまたは複数の単語と同じように機能します。

これは MySQL でのみ実現できますか、それとも PHP を使用する必要がありますか? これはどのように正確に機能しますか?

ご助力ありがとうございます!よろしく、フロリアン

編集:Tom Macの答えを試した後の結果は次のとおりです。

次のような 4 つのレコードがあります。

ここで、文字列 を検索するとs、上位 3 つのレコードのみが取得され、関連性が s の順に並べられます。つまり、レコードは次のように orderer にする必要があります。

今、私はこのようなクエリを試しました (テーブルの名前は ですPAGES):

このクエリは次を返します。

これはワイルドカードのせいですか?*s*文字列も値を見つける必要があると思いますs...

0 投票する
5 に答える
296 参照

database - アプリケーションがセマンティック関連性を判断するために、キーワードを他の関連キーワードとともに保存する無料のデータベースはありますか?

これは貴重な資産の検索のように見えますが、多くのことに対して無料の代替手段があるため、これについては楽観的です.

のような 2 つのキーと値のペアを格納するデータベース

キー値

また

キーコンテキスト値

データを収集してタグ付けしたり、関連する可能性のあるレコードを検索したりする Web 開発者にとって非常に便利です。

このようなデータ テーブルは、保存したいものの正規化された形式でさえあります。

このような無料でコピーできるデータ テーブルについて聞いたことがある場合は、共有してください。ありがとうございました。

0 投票する
1 に答える
868 参照

java - 辞書検索を回避する効率的なLemmatizer

'eat'のような文字列を'eating'、'eats'に変換したい。私は解決策としてレンマタイゼーションを検索して見つけましたが、私が見つけたすべてのレンマタイザーツールはワードリストまたは辞書ルックアップを使用しています。辞書検索を回避し、高効率を提供するレンマタイザーはありますか?ルールに基づくレンマタイザーである可能性があります。はい、私は「ステマー」を探していません。

0 投票する
1 に答える
346 参照

search - 検索結果を関連性で並べ替えるにはどうすればよいですか?

私は、データベースを検索し、ユーザーが入力した文字列に従って、関連性によって検索結果を並べ替えるプロジェクトに取り組んでいます。私の現在の検索はかなりまともだと思いますが、結果を関連性でソートするために書いたコンパレーターは私に面白い結果を与えています。何が関連性があると考えるべきかわかりません。これが情報検索の大きな分野であることは知っていますが、関連性によってオブジェクトを並べ替える検索の例をどこから見つければよいかわかりません。フィードバックをいただければ幸いです。

私の特定の問題についてもう少し背景を説明するために、ユーザーはWebサイトデータベースに文字列を入力します。この文字列には、マイナー分類やメジャー分類(XBox 360ゲームなど)などのさまざまなフィールドを持つオブジェクト(ストア内のアイテム)が格納されます。 major=video_gamesおよびminor=xbox360フィールドとその特定の名前で保存される場合があります)。検索で考慮する必要があると思う4つの主要なフィールドは、オブジェクトのタイプの特定の名前、メジャー、マイナー、およびジャンルです。

0 投票する
1 に答える
77 参照

lucene - Lucene 2.9 での関連性によるアイテムの並べ替えの問題

Lucene.NET バージョン 2.9 を使用して、フリー テキスト クエリを使用してアイテムを検索しています。関連性の高い Lucene によって自動的に並べ替えられたアイテムを取得します。1つの奇妙なケースを除いて、うまく機能しています。Agile project managementを検索すると、Lucene によって返される上位 4 項目は次のとおりです。

  1. 誰でもわかるアジャイルプロジェクト管理
  2. アジャイル プロジェクト管理の基礎
  3. アジャイルなプロジェクト管理
  4. アジャイル プロジェクト管理

アイテム 3 または 4 は完璧なので、一番上に表示されるはずです。検索した多くの場合、100%一致した項目が上位に表示されます。ここで何が起こっているのか、誰でも説明できます。標準のアナライザーを使用しています。

0 投票する
3 に答える
10468 参照

algorithm - 多因子加重ソートで最も関連性の高い結果を提供する方法

「関連性」の順に、2+ファクターの加重ソートを提供する必要があります。ただし、1つ以上の要素が他の要素の「緊急性」(重み)に影響を与えるようにしたいという点で、要素は完全に分離されていません。

例:投稿されたコンテンツ(記事)は賛成/反対投票できるため、評価があります。投稿日があり、カテゴリもタグ付けされています。ユーザーは記事を書いて投票することができ、自分自身に何らかのランキング(専門家など)がある場合とない場合があります。おそらくStackOverflowに似ていますよね?

タグでグループ化され、「関連性」でソートされた記事のリストを各ユーザーに提供したいと思います。関連性は記事の評価と年齢に基づいて計算され、著者のランキングの影響を受ける可能性があります。IEは、数年前に書かれた高ランクの記事が、昨日書かれた中ランクの記事ほど関連性があるとは限りません。また、専門家が記事を書いた場合、「ジョー・シュモー」が書いた記事よりも関連性が高いものとして扱われる可能性があります。

もう1つの良い例は、ホテルに価格、評価、アトラクションで構成される「メタスコア」を割り当てることです

私の質問は、多因子ソートに最適なアルゴリズムは何ですか?これはその質問の複製かもしれませんが、私は任意の数の要因(より合理的な期待は2〜4の要因)の一般的なアルゴリズム、できれば私がする必要のない「完全自動」関数に興味がありますユーザー入力を微調整または要求すると、線形代数と固有ベクトルの奇抜さを解析できません。


私がこれまでに見つけた可能性:

注:Sは「ソートスコア」です

  1. 「線形加重」 -次のような関数を使用します。ここで、任意に割り当てられた加重であり、因子の値です。また、正規化する必要があります(つまり)。これは、 Lucene検索の仕組みのようなものだと思います。S = (w1 * F1) + (w2 * F2) + (w3 * F3)wxFxFFx_n = Fx / Fmax
  2. 「Base-N加重」 -加重よりもグループ化に似ており、加重が基数10の倍数で増加する線形加重であるため(CSSセレクターの特異性と同様の原則)、より重要な要素が大幅に高くなります 。S = 1000 * F1 + 100 * F2 + 10 * F3 ...
  3. 推定真の値(ETV) -これは明らかにGoogle Analyticsがレポートで導入したものであり、ある要素の値が別の要素に影響を与えます(重み)-結果として、より「統計的に有意な」値でソートされます。リンクはそれをかなりよく説明しているので、ここに方程式があります: ここで、は「より重要な」要因(記事の「バウンス率」)であり、「重要性の変更」要因(記事の「訪問」)です。S = (F2 / F2_max * F1) + ((1 - (F2 / F2_max)) * F1_avg)F1F2
  4. ベイズ推定値-ETVに非常によく似ています。これは、IMDbが評価を計算する方法です。説明については、このStackOverflowの投稿を参照してください; 方程式:、ここで、は#3と同じであり、「有意性」係数の最小しきい値制限です(つまり、X未満の値は考慮されません)。S = (F2 / (F2+F2_lim)) * F1 + (F2_lim / (F2+F2_lim)) × F1_avgFxF2_lim

オプション#3または#4は、#1および#2のように任意の重み付けスキームを選択する必要がないため、非常に有望に見えますが、問題は、2つ以上の要因に対してこれをどのように行うかです。

また、2要素均等化アルゴリズムのSQL実装に出くわしました。これは、基本的に、最終的に作成する必要があるものです。

0 投票する
2 に答える
1728 参照

solr - SOLR で複雑なトークン照合アルゴリズムを実装する方法

問題の説明

ユーザーが提供するフリーテキスト入力 (「フォード モーター」などの会社名) を、140 万の会社名からなる参照データ ソースと照合するカスタム アルゴリズムを実装しようとしています。

アルゴリズムは次の手順を実行します。

ステップ 1)ユーザー提供の検索入力の「完全一致」、「一致の開始」、最後に「一致の一致」を実行します。このステップの結果も同じ順序でソートされます。

ステップ 2)参照会社名を使用した検索入力のトークンごとの一致を実行します。

すべてのトークンは次の順序で照合されます: Exact、Begins、Contains、Levenshtein Distance (< 0.2)、Refined Soundex。

たとえば、ユーザー入力が「Foord Motur Holding」であり、「The Ford Motor Holdings Company」と照合される場合、最初のトークン「Foord」は、Soundex の照合に基づいて「Ford」と一致し、2 番目のトークン「Motur」は、「Motor」に基づいて一致します。 Edit Distance Algo と最後のトークン "Holding" は、Begins マッチを介して "Holdings" と一致します。

スコアリング: すべてのトークン マッチは、マッチング テクニックを評価するスケールで最初にスコアリングされます。完全一致が最良で、Soundex が最悪です。

全体のスコアは、個々のトークン マッチ スコアの加重平均を計算することにより、0 ~ 100% のスケールで計算されます。重みは、トークンのインデックス順序に基づいて割り当てられます。つまり、最初のトークンの重みが最も高く、最後のトークンの重みが最も低くなります。

私の部分的な解決策

参照会社名を格納するために、solr に単純なスキーマを実装しました。文字列フィールド (companyName と呼ばれる)、文字列からコピーされた単純なテキスト フィールド (companyText と呼ばれる)、および文字列からコピーされ、洗練された Soundex ベースのマッチングのために PhoneticFilterFactory を使用する別のテキスト フィールド (companySoundex と呼ばれる)。

ステップ 1) を単一の solr クエリで複製することができました。

ステップ 2) では、solr サーバーに対して 3 つの並列クエリを実行する予定です。companyText フィールドで単純なテキスト検索を実行する最初のクエリ、companyText フィールドで ~ 演算子を使用してあいまい一致を実行する 2 番目のクエリ、companySoundex フィールドで soundex 一致を実行する 3 番目のクエリ。これら 3 つの並列クエリの結果を何らかの形で組み合わせて、目的の最終結果を得る予定です。

質問:

1) 元のアルゴリズムのステップ 2) を複製するより良い方法はありますか?

2)「3並列クエリ」アプローチを使用したとしても、元のアルゴリズムで得られる「正しい」ソート順を取得するにはどうすればよいですか?主な問題は、これら 3 つのまったく異なるクエリの solr スコアを比較して、結果の最終的な結合を行う方法だと思います

この長い質問を読んでくれてありがとう。ヘルプ/ポインタは大歓迎です。

0 投票する
4 に答える
787 参照

function - 値を減衰させる関数

それぞれが検索クエリの関連性スコアを持つドキュメントのリストがあります。ランキングプロセスで日付を紹介するために、関連性スコアを低くするために古いドキュメントが必要です。1 /(1 + date_difference)などの関数をいじってみましたが、逆数関数は最近の日付を閉じるにはあまりにも識別力があります。

スコアを増幅するために、範囲(0..1)とドメイン(0..x)の数学関数を考えていました。ここで、x軸はドキュメントの年齢です。関数からさらに必要なものを画像で説明するのが最善です。