2017-01-10 14 views
0

の実装を開始しましたApache Lucene SOLR 6.3.0の自動実装を開始しました。その中Apache Lucene SOLR 6.3.0

私は次のように列スキーマを作成します。

<fields> 
<field name="id" type="int" indexed="true" stored="true" required="f" multiValued="false" /> 
<field name="specialityName" type="string" indexed="true" stored="true"/> 
<field name="isActive" type="int" indexed="false" stored="true"/> 
<field name="term" type="string" indexed="true" stored="true"/> 
<field name="tableName" type="string" indexed="true" stored="true"/>  
</fields> 

用語欄に検索したいと思います。

自動完了結果の条件は次のとおりです。

My data // Exact match. 
My data% // Start with. 
%My data% // Any where in string. 

これです。ですから、私は可能な限り最大の結果をアーカイブしたいと思います。 私は多くの方法でクエリを試みましたが、成功できませんでした。

私に役立つヘルプがあります。完全に一致する

答えて

0

以下のように検索することができます。

prefTerm:"My Data" || prefTerm:My\ \Data* || prefTerm:*My*pain*

"My Data" : Exact match 

My\ \Data*: Start with, here we need to escape all extra characters which can impact in jenkins search 

*My*pain*: contains search 
0

あなたはあなたがq=term:My*data*

+0

私はすでにこれを試みたが、私は、Q =用語にしようとすると:私のデータは、それが「私」のみ「マイデータ」から始めて、私は混乱しています理由ですではないため、データを返します*。 – bharatpatel

+0

q = term: "My * data *" ...修正された答えを確認してください –

0

q=term:*Mydata*

試みを試みることができる部分検索、または任意の場合はq=term:My data*

を試すことができて、あなたが開始するためにq=term:"My data"

を試すことができます次のフィールドタイプを試すことができます。ユーザ入力をSOLRに渡すと、入力自体からスペースが削除されます。あなたが必要とする正確に何ターン:

とするtermフィールドを変更します。あなたの例適用

<field name="term" type="input_general" indexed="true" stored="true"/> 

Exact Match Searchについて

を。試してみることができますq=term:"Mydata"

Start With Searchの場合;試すことができますq=term:Mydata*

the Contain Searchの場合;お試しくださいq=term:*data*

+0

こんにちは、これを試しましたが、エラーが発生します:java.lang.IllegalArgumentException:未知のパラメータ:{replace = all} replace = "all"を削除すると、期待どおりに動作しません。 – bharatpatel

+0

フィルターにcharFilterを変更し、replace = "all"のエラーが解決されましたが、結果がまだ予想されませんでした。 – bharatpatel

+0

@bharatpatelこれはsolr 3.6用です。replace = allを削除してもうまくいきました。変更されている可能性があります –