0

私たちは研究アーカイブのさまざまな検索エンジンに直面しており、Xapian-Omega のドキュメントを閲覧した後、Omega オプションがいくつかの興味深い検索オプションを備えた適切なソリューションであると思われるため、試してみることにしました。

Xapian-Omega を Linux サーバー (Deb 7) にインストールし、セットアップをテストして成功しました。ただし、Xapian-Omega でワイルド カードまたは正規表現を使用する方法、または使用できるようにする方法については不明です。

Xapian の場合、ワイルド カード オプション "QueryParser flags" を有効にする必要があることを読みました。すなわち。1つか2つの例で説明するか、ページを示してください。

しかし、Omega CGI の例に関する情報はあまり見当たりませんでした。この後者はうまく動作しますが、ワイルド カード オプション (一般的なワイルド カードの * や単一文字の ? など) は、デフォルトでは期待どおりに機能しないようで、ステミングや部分文字列などが機能している場合でも、便利です。

例: 標準的な単純なワイルド文字検索を特定の精度で使用できるようになれば興味深いでしょう。単一文字の場合

Omega で Regexp を認識できますか? 例: sep[ae]r[ae]te(\w+)? または、電子メールやクレジット カード番号などの構造化された形式や、研究論文などの特定の数式タイプを検索します。

Olly Betts からの以前のメモ (Dev Mailing List) では、これに関する 1 つの提案はインデックス ファイルを grep することでしたが、これは Omega の RAD の利点を無効にします。

ワイルドカードまたは正規表現を使用した Omega を使用した検索の例は、非常に高く評価されます...このテーマに関する情報が、Xapian のみを使用して高度な検索を開発する方法を示す例とともに十分に提示されているページの表示でさえ、大歓迎です (PHPまたはおそらくPython)。

(インデックス サイズのサイズやアーカイブのインデックス作成時間の最終的な大幅な増加については、現時点では懸念していません)

4

2 に答える 2

0

Omega で右ワイルドカード (「medic*」など) を有効にすることができます( Omegascript$set{flag_wildcard,1}のドキュメントで説明されています) 。ワイルドカードの使用に関するユーザー マニュアルのセクションがあります。FLAG_WILDCARD

Xapian は正規表現検索のサポートを提供していませんが、理論的には (正規表現によっては) 潜在的にコストがかかる場合はサポートできると考えています。データベース内のステム処理されていない用語に対して正規表現を実行し、それらを検索に入力する必要があります。それが困難になるのは、正規表現が多くの用語に展開される場合です (たとえば、正規表現として「a」のみ)。また、効率化には微妙な点もあります。ターム リストから一定のプレフィックスを持つものにジャンプするのは簡単です。可能であれば、それを利用したいと思うでしょう。

の例では、スペル修正(を使用して有効にできる ae 置換の場合)とステミング(「te」の後の末尾の文字の場合)sep[ae]r[ae]te(\w+)?の組み合わせが実際に必要なように思えます。オメガのデフォルトは英語のステミングですが、変更済み)、またはワイルドカードまたは部分一致のサポート。$set{flag_spelling_correction,1}

ユースケースに正規表現が必要な場合は、xapian-discuss メーリング リスト で取り上げることをお勧めします。前回の議論以降、Xapian は前進しており、そのようなサポートを構築することは、当時よりも容易になったと思います。

于 2016-08-17T10:03:56.287 に答える