Search APIでタクソノミーの同義語を堅牢に機能させるにはどうすればよいですか?


20

タグシノニムは、多くのサイトで人気のある重要な機能であり(たとえば、StackExchangeで使用されます)、分類シノニムは、Drupal 6のコア分類モジュールの一部として使用されていました。フィールドAPIを使用します

シノニムが確実に機能する場合、検索で非常に役立ちます。たとえば、「America」を検索すると「USA」などのタグが付けられたコンテンツが見つかることを確認します。ただし、人気のあるSearch API - Facet APIを使用する場合、この機能を実装する標準的な方法についてのリードは見つかりませんノード検索用の関連する統合検索モジュールのファミリー。

このようなモジュールのクラスターで作業するときは、「フローに沿って進む」ことが重要です。これは、実装するシステムがコミュニティやモジュールメンテナーの思考に反しないようにするためです。それらが穀物に反するとき、それらは不安定であり、これらのモジュールへの将来の変更によって壊れる危険があります。

Search APIを使用してサイトのD7に分類法の類義語を実装するための、信頼できる/堅牢な/標準的な/期待される方法は何ですか?(特に、Search API Solrを使用しますが、特定の検索プロバイダーを抽象化するSearch APIの試みがこの場合に機能することを望みます)。

このシステムが動作しているように見えても、それがあなたが考え出したものであり、それが穀物に反するかどうか(Drupalではかなり一般的です)わからない場合は、とにかくあなたの情報と共有してくださいSearch API-Facet APIファミリのどの機能とモジュールが機能するか、または機能しないかをテスト、使用、および経験します。

私が研究で見つけた、もっともらしいが潜在的に不安定なオプション:

  • D7 Search Synonymsモジュールはありますが、ほとんど使用されていないようです。また、Search API(Drupalコア検索を念頭に置いて設計されています)などのサードパーティの検索モジュールで動作するか、引き続き動作するかは確認されていません編集: また、一般的にD7では信頼性が高すぎるようには見えません
  • 「類義語」と呼ばれる用語参照フィールドを分類用語に追加し、ノード自体の用語と同じ重みでSearch APIの用語からこのフィールドにインデックスを付けることは理論的には可能です。これはテキスト検索では機能しますが、Search APIファミリ全体にスムーズに組み込まれる堅牢なものというよりは、浅いMacGuyver-yダクトテープソリューションのように感じます。たとえば、用語「イギリス」にシノニム「イギリス」が含まれる場合、「イギリス」で検索するユーザーはユナイテッドカインドゴムでタグ付けされた結果を取得しますが、オートコンプリートタクソノミー公開フィルターに「イギリス」と入力するか、タクソノミーファクトを持つイギリスを選択します「United Kingdom」でタグ付けされたコンテンツは表示されません。*****
  • 別の同様の可能性は、複数語のプレーンテキストフィールド「シノニム」を用語ボキャブラリーに追加し(または、コンマ区切りでも)、上記の用語名と同じ重みでインデックス付けすることです。しかし、これは上記の例の上記と同様の、さらに悪くない問題を持ちます。「英国」は、ファセットまたは公開されたフィルターのオプションとしてリストされさえしません。名前とシノニム( "United Kingdom(Britain、UK)")を組み合わせて複合フィールドを作成し、それを使用するようにファセット/公開フィルターなどを設定する方法があるかもしれませんが...これを行うには、心配するほどハッキーではなく、穀物に対して心配する必要はありません。編集: Search API Combinedはこのようなもののために設計されているようですが、私は
  • 次に、すべてを用語名に詰め込むという最後の手段があります。これは望ましくなく、多くの場合、非常にいリストになることは明らかです(たとえば、「North韓国(PRK、朝鮮民主主義人民共和国)」...)。または、短いバージョンを表示する「表示名」フィールドを持ち、検索以外のすべて(すべてのビュー、Pathauto、用語名を使用する他のすべてのcontrib / coreモジュール)を設定して用語名の代わりにこれを使用します...非常にハックし、非常に穀物に対して。
  • Apache Solrには同義語機能があり、同義語のテキストファイルが読み取られ、これらの用語はそれを使用する検索全体で同義語として扱われます。ただし、Solrを使用するSearch APIセットアップでは可能ですがこれはモジュールメンテナーによってサポートされていない「独自のリスクでの試行」高度なSolr構成と見なされます。また、分類法の文脈での同義語よりも、サイトの言語での一般的な同義語の方が適切です。たとえば、英国、イングランド、スコットランドなどを区別しない分類法を持つサイトでは、タグ付けの文脈では同義語と見なしたいが、本文の検索の文脈では同義語と見なしたくない場合があります。編集: ヘッドファセットAPIメンテナーは、このルートに対して警告します Solr統合モジュールは、テキストではなくTIDとして用語を処理するためです。

これは欠陥のある例であることは承知しています。イギリス/イギリス、および一般的な国の場合、人々はどちらか一方しか持たないリストを使用することに慣れているからです。類義語を探すことを考えない、単純ではないケース(製品カテゴリなど)がたくさんあります。

更新:Drupal.org Facet APIキューの新しいスレッドの関連情報。また、Search APIキューの(現在未回答の)スレッド

(同じトピックについてdrupal.orgのサポートリクエストやdrupalの質問があるかどうか疑問に思っているルール弁護士:はい、実際、モジュールメンテナーから圧力を取り除くことが推奨されています


1
これに対する解決策を見つけましたか?私は今まさにこの問題を抱えています。
ヴィシャル

回答:


2

私はbojanzの優れたSynonymsモジュールを使用しています。これは、D6シノニム関数の完全な書き直しであり、多くの新しい機能が追加されています。それはあなたが必要とするもののほとんどを行うかもしれないように見えます。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.