1

読んでくれてありがとう :)

Lucene を使用して、RTF ドキュメント全体で「UTTD_Equip_City_TE」などの単語を検索しようとしています。この単語は、次の 2 つの異なる形式で表示されます。

  • «UTTD_Equip_City_TE»,
  • «UTTD_Equip_City_TE»

最初にStandardAnalyzerで試してみたのですが、単語を「UTTD」「Equip」「City」「TE」に分解するようです。

その後、WhiteSpaceAnalyzer を使用して再試行しましたが、機能していないようです... (理由はわかりません)。

この問題にアプローチする方法を教えてください。ところで、Lucene ソースを編集して Ant で再コンパイルすることはオプションではありません :(

ありがとう。

編集: このドキュメントには他のテキストもあります。例えば:

SHIP TO LESSEE (EQUIPMENT location address): «UTTD_Equip_StreetAddress_TE», «UTTD_Equip_City_TE», «UTTD_Equip_State_MC» 

基本的に、RTF ファイルのインデックスを作成しようとしています。各 RTF ファイル内には、変数を含むテーブルがあります。変数は と でラップされ«ます»。ドキュメントでこれらの変数を検索しようとしています。検索してみまし"«" + string + "»"たが、うまくいきませんでした...

この例は、より良い画像を提供する可能性があります: http://i.imgur.com/SwlO1.png

助けてください。

4

2 に答える 2

0

KeyboardAnalyzerは、フィールド全体を単一の文字列としてトークン化します。サブストリングがドキュメント内の異なるフィールドにある場合、これはあなたが探しているものかもしれないように思えます。

参照:KeywordAnalyzer

代わりに、ドキュメントのコンテンツ全体を1つのフィールドに追加していて、その中に「_」文字が埋め込まれているサブストリングを検索する場合は、WhitespaceAnalyzerが機能すると思います。しかし、あなたはそれがうまくいかなかったと述べました。WhitespaceAnalyzerを使ってみたときの結果を教えてください。また、インデックス作成とクエリの両方に使用しましたか?

于 2012-08-10T17:13:05.897 に答える
0

ここには 2 つの選択肢があります。どちらの場合も、カスタム アナライザーを構築する必要があります。

オプション1

StandardTokenizer の文法ファイルから始めて、'_' で区切られたテキストを単一のトークンとして出力するようにカスタマイズします。( JFlex/Java CC を使用した新しい TokenStream API 用のカスタム Tokenizer の生成を参照してください)。この新しいトークナイザーと LowerCaseFilter を使用してアナライザーを構築します。

作戦2

WhiteSpaceTokenizer とカスタム TokenFilters で構成されるカスタム アナライザーを記述します。これらの TokenFilters では、WhiteSpaceTokenizer によって返されたトークンをどのように処理するかを決定します。

分析の詳細については、http://lucene.apache.org/core/3_6_0/api/core/org/apache/lucene/analysis/package-summary.htmlを参照してください。

于 2012-08-12T12:33:25.940 に答える