web-dev-qa-db-ja.com

分類法の同義語をSearch APIで確実に機能させるにはどうすればよいですか?

タグの同義語は、多くのサイトで人気があり重要な機能です(たとえば、ここではStackExchangeで使用されます)。分類の同義語は、以前はDrupal 6の中核となる分類モジュールの一部でした being Field APIを使用して作成された「独自のロール」カスタムシノニムシステムを支持して削除されました

シノニムが確実に機能する場合、それらは検索で非常に役立ちます。たとえば、「アメリカ」の検索で「アメリカ」というタグの付いたコンテンツが確実に見つかるようにします。しかし、人気のある 検索API - ファセットAPI 関連する統合検索モジュールのファミリー、Node検索用。

このようなモジュールのクラスターで作業する場合は、「フローに合わせて進む」ことが重要です。実装するシステムが、コミュニティーやモジュールのメンテナーの考え方に反しないようにするためです。それらが粒子に逆らうと、それらは不安定になり、これらのモジュールへの将来の変更によって破壊されるリスクがあります。

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

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

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

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

これは欠陥のある例であることを私は知っています。英国/英国の場合、そして一般的に国は、どちらか一方だけしかないリストを使用することに慣れているからです。類義語を探していると思わないような、それほど単純ではないケース(製品カテゴリなど)はたくさんあります。

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

(drupal.orgのサポートリクエストがあり、drupalが同じトピックに関する質問に答えるのは大丈夫かどうか疑問に思っているすべてのルールの弁護士: はい、実際、モジュールメンテナからのプレッシャー

私はbojanzの優れた Synonyms module を使用しています。これは、D6の同義語関数を完全に書き直したもので、多数の新しいベルとホイッスルがあります。それはあなたが必要とするもののほとんどをするかもしれないように見えます。

2
Triskelion