1

私が Lucene に保存しているドキュメントの一部には、ファイル パスまたは URI を含むフィールドがあります。クエリ用語にパスまたは URI セグメントが含まれている場合に、ユーザーがこれらのドキュメントを取得できるようにしたいと考えています。

たとえば、パスが

C:\home\user\research\whitepapers\analysis\detail.txt

ユーザーがクエリを実行してそれを見つけられるようにしたいと思いますpath:whitepapers

同様に、URI が

http://www.stackoverflow.com/questions/ask

を含むクエリuri:questionsはそれを取得します。

これらのフィールドには特別なアナライザーを使用する必要がありますか? それとも、StandardAnaylzer がその仕事をしてくれますか? これらのフィールドの前処理を行う必要がありますか? (たとえば、スラッシュまたはバックスラッシュをスペースに置き換えるには?)

提案を歓迎します!

4

1 に答える 1

0

StandardAnalyzerを使用できます。LuceneのTestStandardAnalyzer.javaに次の関数を追加して、これをテストしました。

public void testBackslashes() throws Exception {
  assertAnalyzesTo(a, "C:\\home\\user\\research\\whitepapers\\analysis\\detail.txt", new String[]{"c","home", "user", "research","whitepapers", "analysis", "detail.txt"});
  assertAnalyzesTo(a, "http://www.stackoverflow.com/questions/ask", new String[]{"http", "www.stackoverflow.com","questions","ask"});

}

この単体テストは、Lucene2.9.1を使用して合格しました。特定のLuceneディストリビューションで試してみることをお勧めします。ドメイン名とファイル名を壊さずに維持しながら、それはあなたが望むことをするのだと思います。私はユニットテストが好きだと言いましたか?

于 2010-09-13T09:10:07.580 に答える