0

I have got indexes created on tables having data of the form: indexname='text'---->Today is a great day for running in the park. Now i want to perform a search on the indexes where only 'day' or 'run' is appearing in the text.

q = 'text:(day or run*)' のようなクエリを実装しましたが、このクエリはインデックスから結果を返しません。これは正しい方法ですか?または、正規表現を適用してクエリを改善するにはどうすればよいですか?

4

2 に答える 2

1

あなたのユースケースは非常に基本的で、Solr では正規表現をまったく必要としません。構文に問題があるようです。q=text:day OR text:run は、探していることを正確に実行する必要があります。

于 2012-05-03T07:15:11.317 に答える
0

正規表現とワイルドカードは、検索エンジンで低速です。言語に依存した方法で用語を前処理することで、パフォーマンスが向上します。

単語のさまざまな形式を共通の語幹に変換する分析ステップであるステマーを使用して、「run」を「running」に一致させることができます。クエリとインデックス タームが両方ともステミングされている場合、それらは一致します。

Extended Dismax (edismax) 検索ハンドラーも調べる必要があります。これにより、「day run」を「day OR run OR "day run"」のように、個々の単語とフレーズの検索に変換する作業の一部が行われます。次に、重みが異なる複数のフィールドに対して、それをすべて自動的にさらに拡張できます。

于 2012-05-03T15:35:08.230 に答える