2011-01-20 23 views
1

Hey Guys、 アプリケーションに検索機能を実装しようとすると、書き込みがありました。Solr/SolrNet - 文字検索による文字の検索にワイルドカードを使用する

Tomcat7で実行されているSolr 1.4.1 ビューのインデックス付きのMS SQLServerへのJDBC接続 Solrのインデックス作成が完了し、インデックスが機能しています。

Solrを検索して通信するには、少しテストしたWCFサービス(私たちのメインサービスで後で実装する)を作成しました。

主なアプリケーションにテキストフィールドを実装することを目的としています。このテキストフィールドでは、ペイントブラシのようなものを入力し、ますます多くの文字が入力されるにつれてオブジェクトのリストを徐々にフィルタリングすることができます。

これは、ある時点までSolrでうまく動作しています。イムかなり(ちゃんと私のクエリの最後には、そのようなイムはサーバーとその返送結果で* * 痛み PA * ペイント*

など Pのような要求の多くを投げるようワイルドカードアスタリスクを使用して印象的に速い実際に)。唯一の問題は、ユーザが単語全体を入力すると、クエリがpaintbrush *であり、その時点でsolrが0の結果を返すことです。

だから、そのクエリ+ワイルドカードのみクエリ+何かしていないクエリ+何

することができ、私はLucene.Netの下で、この作業を取得するために管理が、Solrには、物事にそれはそうと同じようにやってイマイチらしいです。

このような機能の実装についてアドバイスできますか?

SolrNetを使用してイムので、見て多くのコードがない:http://pastebin.com/tXpe4YUe

私はそれがどこを見れするために知っていない、まだそのSolrのにアナライザとパーサが、イムとは何かを持って把握:)

答えて

0

ステミングが問題の原因であると考えられます。私はタイプのテキストの代わりにtext_wsのクローンを使用してそれを修正しました。 scema.xmlへの変更点:http://pastebin.com/xaJZDgY4

ステミングが無効になり、小文字の索引付けが有効になります。すべてのクエリが小文字である限り、結果は常に存在しなければなりません。

アナリストはワイルドカードを使用しないので、JohniやJohnniの結果を作り出すロジックは、ワイルドカードを使用すると「壊れ」ます。

あなたの直面している問題と私の解決策がうまくいかない場合は、debugQuery = onをクエリ文字列に追加して、何が起こっているのかを少し見てみましょう。それが問題の絞り込みに役立ちました。

2

Solrでプレフィックスワイルドカードクエリを使用した提案は実装しません。これを行うのに適した他のメカニズムがあります。参照:

+0

インターレースを見ていますが、それは私が中断されたものをかなりしているようです。ここでは、私が欲しいものは、私が求めているテキスト "です。テキストは、データベース内の特定の行(ビューを使用)のすべてのフィールドの連結です。 – mfriis

+0

@mfriis:はい、まさに私が話していることです。あなたのケースがどのように異なっているかを詳しく説明できますか? –

+0

それでは、とにかく右のトラックにイムのように聞こえます。出力はちょっと変わったようです:http://pastebin.com/H2M8aX2sこのクエリを使っています:solr/terms?terms.fl = text&terms.regex = byg。*&terms.regex.flag = case_insensitive in index私は複数のオブジェクトを持っていますそのテキストフィールドに "bygning"と表示されます。今私が必要なのは、IDとタイプ(私の文書スキーマ内の他の2つのフィールド)でリストされたすべてのオブジェクトです。ここでの出力は半ランダムであるようです(結果リストの名前は私には分かっていますが、最高で部分的です)。 – mfriis