問題タブ [lucene]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
search - Lucene スコアの結果
Lucene で、それぞれ 1 つのパーティションのみをカバーする複数のインデックスがある場合。異なるインデックスで同じ検索を行うと、異なるスコアの結果が返されるのはなぜですか? 異なるサーバーからの結果は正確に一致します。
つまり、次を検索した場合:
- 名前 - ジョン・スミス
- 生年月日 - 1934 年 11 月 11 日
パーティション 0は 0.345 のスコアを返します
パーティション 1は 0.337 のスコアを返します
どちらも名前と生年月日が完全に一致します。
lucene - Lucene の正確な順序付け
適切な Lucene の並べ替えまたはランキングを実装する方法がよくわからないという長期的な問題がありました。都市とその人口のリストがあるとします。誰かが「new」または「london」を検索した場合、人口順で並べ替えられたプレフィックス一致のリストが必要です。プレフィックス検索とフィールドによる並べ替えを逆にして、人口フィールド、IE ニューメキシコ、ニューヨークがあります。 ; またはロンドン、ロンドンデリー。
ただし、正確に一致する名前が常に一番上にあることも常に望んでいます。したがって、「ロンドン」の場合、リストには「ロンドン、ロンドン、ロンドンデリー」と表示されます。最初のロンドンは英国にあり、2 番目のロンドンはコネチカットにあります。ロンドン デリーの人口がロンドン CT よりも多い場合でも同様です。
単一のクエリ ソリューションを持っている人はいますか?
exception - Lucene の場合: プレフィックス検索を実行すると、Too Many Clauses エラーが発生するのはなぜですか?
しばらくの間、プレフィックス検索を行うアプリがありました。最近、インデックスのサイズが大きくなり、いくつかのプレフィックスがあまりにも多くて lucene が処理できないことが判明しました。Too Many Clausesエラーが表示され続け、JAR を確認し続け、含まれているコードのいずれも実際にブールクエリを使用していないことを確認したため、非常にイライラしました。
Too Many Hits 例外のようなものがスローされないのはなぜですか? そして、ブールクエリの静的な最大句の整数を増やすと、実際にこのエラーがなくなるのはなぜですか? 私が理解していないクエリの実行方法に基本的なものはありますか? それらがひそかにブールクエリになるということですか?
search - SolrのWildcardQueryエラー
solrを使用してドキュメントを検索し、このクエリ ""を使用してドキュメントを検索しようとするとid:*
、*または?を使用してクエリを解析できないことを示すこのクエリパーサー例外が発生します。最初の文字として。
これを*だけで動作させるためのパッチはありますか?それとも、そのようなクエリを実行するのは非常にコストがかかりますか?
.net - Lucene を使用して電子メール アドレスを検索する
Lucene (特に Lucene.NET) を使用してメール アドレス ドメインを検索したいと考えています。
たとえば、"@gmail.com" を検索して、gmail アドレスに送信されたすべてのメールを見つけたいとします。
「*@gmail.com」の Lucene クエリを実行するとエラーが発生します。クエリの先頭にアスタリスクを使用することはできません。「@gmail.com」のクエリを実行しても、一致するものが返されません。これは、「foo@gmail.com」が単語全体として認識され、単語の一部だけを検索できないためです。
これどうやってするの?
java - solr結果でファセット範囲を取得するには?
Solr のドキュメントにpriceというフィールドがあり、そのフィールドがファセットされているとします。ファセットを値の範囲として取得したい (例: 0-100、100-500、500-1000 など)。どうやってするの?
事前に範囲を指定することはできますが、ドキュメントの値に基づいて範囲 (たとえば 5 つの値) を自動的に計算できるかどうかも知りたいですか?
indexing - ドメイン モデルの変更に合わせて Lucene インデックスを最新の状態に保つための戦略
アプリケーションのドメイン モデル オブジェクトに変更が加えられたときに Lucene インデックスを最新の状態に保つことについて、人々の考えを知りたいと考えていました。
問題のアプリケーションは、Hibernate を使用する Java/J2EE ベースの Web アプリです。私が現在取り組んでいる方法は、Hibernate マップ モデル オブジェクトがすべて、Lucene に記録されたキーと値のペアのセットを返すことができる共通の「インデックス可能」インターフェイスを実装することです。そのようなオブジェクトを含む CRUD 操作が実行されるたびに、JMS キューを介してメッセージ駆動型 Bean に送信します。メッセージ駆動型 Bean は、Lucene にオブジェクトの主キーと、そのオブジェクトの index( ) メソッドから返されたキーと値のペアを記録します。提供された。
このスキームに関する私の主な懸念は、MDB が遅れて、入ってくるインデックス作成操作に追いつかないか、何らかのエラー/例外がオブジェクトのインデックス作成を停止するかどうかです。その結果、一定期間、または長期間にわたって古いインデックスが作成されます。
基本的に、私は、この種のことに対して他の人がどのような戦略を思いついたのか疑問に思っていました. 必ずしも1つの正解を探しているわけではありませんが、「ホワイトボード」のようなアイデアのリストを想像して、脳に代替案を考えさせています.
c++ - MS SQL、C++ ソリューションに代わる最良の全文検索
Microsoft SQL に代わる最良の全文検索は何ですか? (MS SQL で動作します)
LuceneとLucene.NETに似たものを探していますが、.NET と Java の要件はありません。また、商用アプリケーションで使用できるソリューションを見つけたいと考えています。
java - フィールドを無視するJavaLuceneのトラブルシューティング
現在、サイト検索にLucene 2.1.0を使用していますが、難しい問題が発生しました。ターゲット検索中にインデックスフィールドの1つが無視されています。インデックス内のドキュメントにフィールドを追加するためのコードは次のとおりです。
インデックスに対してクエリ(*)を実行すると、次の結果が返されます。
ターゲットクエリの実行:
結果は見つかりません。
私はこれが非常に具体的な質問であることを認識しています。私はLuceneの初心者なので、この問題のデバッグを開始する場所に関する情報を取得しようとしています。
アップデート
Lukeをインストールし、最新のインデックスをチェックしています...フィールドmarket_localは検索で利用できるので、次のように実行すると次のようになります。
検索は正しく機能します(Lukeで)。ここでAnalyzerコードについて説明しますが、検索アプリケーションがLucene 2.1.0を使用し、最新バージョンのLukeが2.3.0を使用しているという事実まで、この問題を解決する方法はありますか?
lucene - Luceneでは、スコアの計算に用語をどのように使用しますか?CustomScoreQueryでオーバーライドできますか?
誰かがクエリ内のドキュメントのスコアリングを正常にオーバーライドして、フィールドの内容に対する用語の「関連性」を自分の関数で判断できるようにしましたか?もしそうなら、それはCustomScoreQueryを実装し、 customScore(int、float、float)をオーバーライドすることによるものでしたか?正確な用語の一致を他の接頭辞の用語の一致よりもはるかに高くランク付けできるカスタムソートまたはカスタムスコアラーを構築する方法を見つけることができないようです。任意の提案をいただければ幸いです。