1

Lucene.NET 2.9.4 の使用に問題があります。多分誰でも私を助けることができます。

現在、ユーザーが open という単語を入力する、検索が自動的に* open *に変更されます。QueryParser.SetAllowLeadingWildcard(true); を設定しました。私は知っています、これは高価になる可能性があります...

私のテキストは:

"メニュー ファイル / 開くを使用して、既存のドキュメントを編集できます"

open *またはopenを検索語として使用すると、lucene がテキストを検索します。

* open * luceneを使用すると、テキストが見つかりません。

なぜだめですか?先頭のワイルドカードの問題は何ですか? 単語の最初、最後、および途中で検索語を見つけたい。

開いているものを検索したい...

  • foo bar => は一致しません
  • foo barを開く=>は一致です
  • testopen foo bar => が一致
  • testopening foo bar => が一致

これどうやってするの?

4

2 に答える 2

1

デフォルトでは先頭のワイルドカードは無効になっていますが、Lucene >=2.1 ではこれを有効にする方法があります。

デフォルトでは、先頭のワイルドカード (*ook など) は QueryParser でサポートされていません。Lucene 2.1 では、QueryParser.setAllowLeadingWildcard( true ) を呼び出して有効にすることができます。これはコストのかかる操作になる可能性があることに注意してください。パターンに一致するトークンを探すには、インデックス内のトークンのリスト全体をスキャンする必要があります。

参照: Lucene FAQ

于 2013-03-05T14:24:41.430 に答える
1

2つのこと:

1) Lukeがクエリ コードと同じ結果を返すことを確認します。

2) 「testopening foo bar」は機能しますか、それとも失敗しますか?

于 2013-03-29T21:08:51.957 に答える