私のデータソースには、スラッシュ、マイナス、プラスなどの多くの特殊文字があります。これらの文字の多くは、luceneに問題をもたらします。
そのため、私がインデックスに入れたすべての文字列をエンコードすることに決めました。私のLuceneインデックスのこのエンコーディング戦略が機能しないのはなぜですか?
たとえば、apple/pearはリンゴになります%2Fpear
非常に同じ文字列を検索すると、この文書が返されると思います。
しかし、私は空の手で帰ってきました。何がうまくいかないの?私の周りのいくつかだます後
--EDIT--
(そのことについては、アナライザで)私はStandardAnalyzerとルークで作成するクエリは宇宙で私の%2を変更することに気づきました。したがって結果はありません。どうにかして、queryAnalyzerがこれらを変換しないようにすることはできますか?たぶん私は%XX別のエスケープ方法を使うべきでしょうか?
--More Info--
私は、索引付けおよび問合せの両方にStandardAnalyzerを使用しています。
スペースをエンコードしていません。これが、デフォルトのURLエンコーダを使用する代わりに、自分でエンコードしたエンコードをすばやくロールバックした理由の1つです。 作るりんご/梨にりんご梨私の実際のデータでは、必ずしも(inocentを保護するために果物を使用して)とスペースを挿入するときとしないときあまりにも多くのリスク。 Lukeを使用しているフィールドが表示されますappel%2FpearfruitNameの検索:appelが動作します。 fruitNameの検索:appel%2Fpearはありません。fruitName:appel%2fpear。
私は、Lucene.netのデフォルトのEscape()メソッドがあまり完璧ではないことに気付きました。フォワードスラッシュは間違いなく問題ですが、たとえばエスケープされていません。 –