2012-05-03 4 views
0

私は、次の形式のデータを持つテーブルにインデックスを作成しました: indexname = 'text' ---->今日は公園で走るのに最適な一日です。 これで、テキストに 'day'または 'run'だけが表示されているインデックスで検索したいと思っています。Solrクエリでregexを適用しますか?

私はのようなクエリを実装している:=「テキスト:(日または実行*」) Q しかし、このクエリは私にこの正しい方法をindexes.Isから任意の結果が返されていないか、またはどのように私は、適用することによって、私のクエリを向上させることができますか?正規表現?

+0

あなたのスキーマから関連行を投稿してください。正規表現やインデックスがあなたの考えを意味するのは明らかではありません。 – Potatoswatter

+0

AFAIK正規表現は検索エンジンでは使用できません – MajidTaheri

+0

[Solr edismaxでサポートされている正規表現の特徴は何ですか?](http://stackoverflow.com/questions/9332343/what-regular-expression-features-are-supported -by-solr-edismax) –

答えて

1

あなたのユースケースは非常に基本的であり、Solrでは正規表現を一切必要としません。構文の問題があるようです。 q =テキスト:日またはテキスト:あなたが探しているものを正確に実行する必要があります。

+0

また、フィールドは[テキストタイプ]でなければなりません(http://stackoverflow.com/questions/10355713/facing-issue-while-searhing-on-string-type-field/10362591 #10362591)。 – aitchnyu

0

検索エンジンで正規表現とワイルドカードが遅いです。言語に敏感な方法で用語を前処理することで、より優れたパフォーマンスが得られます。

「実行」と「実行中」を、語幹の異なる形を共通の語幹に縮小する解析ステップである「語幹」と突き合わせることができます。クエリとインデックス用語が両方ともステムされると、それらは一致します。

Extended Dismax(edismax)検索ハンドラも調べてください。そうすれば、「day run」を「day OR run or day run」のような個々の単語やフレーズの検索に変える作業を行うでしょう。次に、異なる重みを持つ複数のフィールドに対して、それをさらに拡大することができます。

関連する問題