2

Spring MVC プロジェクトで hibernate-search を使用しています。何かを達成したいのですが、それが可能かどうかはわかりません。問題は次のとおりです。

これにはNGramFilterFactoryClassを使用しており、 minGramSize=3およびmaxGramSize= 3を構成しています。

私の検索用語が「キーワード」だとしましょう

次のようなものを入力すると:

"ywo", "key", "ord", "blablaordblabla"

クエリは「キーワード」を返します。これで問題ありません。これがどのように機能するかは理解していますが、次のようなものを入力したときにやりたいことがあります。

"bkey", "blablaordblabla"

「キーワード」を返したくありません。「キーワード」は、検索語が次のような場合にのみ返されます。

"key", "ord", "ywo", "eywo", "word" etc...

だから、私は「%like%」タイプのクエリを探していると思います。hinnernate-search でこれを達成するにはどうすればよいですか?

4

2 に答える 2

1

NGrams を使用して入力を分析すると、正確な「Like%」クエリを実行できなくなります。おそらく、SimpleAnalyzerなど、キーワードを小さな断片に完全に分割しない類似のものが必要になるか、このフィールドの分析をスキップしてそのままインデックスを作成することが必要になる場合があります。

次に、これをワイルドカード クエリと組み合わせます。参照ドキュメントの例で は、キーワード要素を使用してクエリを作成する方法に注意してください。これにより、本質的に入力のアナライザーが無効になります。(ドキュメントのワイルドカード クエリセクションを下にスクロールしてください)。

別のユースケースで必要になるため、NGrams を使用していると思います。@Fields アノテーションを使用して、同じプロパティをさまざまな方法でインデックス付けできることを思い出してください。そのため、ngram でインデックス付けしたり、ワイルドカード クエリにより適した別の形式でインデックス付けしたりすることもできます。

于 2013-10-17T17:36:52.257 に答える
1

あなたが探しているものかどうかはわかりませんが、「ワイルドカード クエリ」と呼ばれるものが必要かもしれません。

こちらのリンクを参考にしてみてください。このstackoverflowトピックもご覧ください

于 2013-10-16T13:56:18.953 に答える