oracleデータベースを索引付けするためにsolrを構成しようとしています。私は、データベース内のすべての検索可能列をインデックス化し、Solrのフィールドとにおけるので、私の選択クエリの列名と同じ名前を使用している Solr q結果とデータベースSQL結果
私のschema.xmlでそのように<fieldType name="text" class="solr.TextField" positionIncrementGap="100">
<analyzer type="index">
<tokenizer class="solr.StandardTokenizerFactory"/>
<filter class="solr.StopFilterFactory" ignoreCase="true" words="stopwords.txt"/>
<filter class="solr.LowerCaseFilterFactory"/>
<filter class="solr.RemoveDuplicatesTokenFilterFactory"/>
<filter class="solr.ReversedWildcardFilterFactory" withOriginal="true"
maxPosAsterisk="3" maxPosQuestion="2" maxFractionAsterisk="0.33"/>
</analyzer>
<analyzer type="query">
<tokenizer class="solr.StandardTokenizerFactory"/>
<filter class="solr.SynonymFilterFactory" synonyms="synonyms.txt" ignoreCase="true" expand="true"/>
<filter class="solr.StopFilterFactory" ignoreCase="true" words="stopwords.txt"/>
<filter class="solr.LowerCaseFilterFactory"/>
</analyzer>
</fieldType>
をリードするワイルドカード検索や様々な他のフィルタを有効にする必要がありdb-data-config.xmlは単にselect * fromのビューです。
我々はSolrの、データベースから異なる結果を受けて、以下のようにSQLクエリ1307件のレコードのみ7
(COLUMN1:(Value0) AND COLUMN2:(Value1))
OR (COLUMN3:(Value2 OR Value3 OR Value4))
AND (COLUMN4:(Value5))
戻り以下のよう
select count(*) from VIEW
where (COLUMN1 = 'Value0' and COLUMN2='Value1')
OR COLUMN3 in ('Value2','Value3','Value4')
AND COLUMN4='Value5'
とSolrのクエリを返す例えば
を照会
私たちはすべての関連データを持つ1つのビューでのみ動作しています。 solrの設定はビュー内のすべてのカラムにインデックスされ、結果は似ていると思っていました。誰かが矛盾を親切に説明できますか?
EDIT
尋ねたように値を追加:Solrのクエリ
COUNTRY_NAME:(United States) AND ELEMENT_CODE:(CT)) OR (UNIT_STATUS:(Operating OR Order OR Shipped)) AND (FRAME_GR_DISPLAY:(06A))
データベースクエリ一般的に使用すると、SQLのような逐語的な一致がない場合は、あなたが分析したフィールドを使用してはならない話す
select * from VIEW where
(COUNTRY_NAME = 'United States' AND ELEMENT_CODE='CT')
OR UNIT_STATUS in ('Operating','Order','Shipped')
AND FRAME_GR_DISPLAY='06A'
「Value0」ではなく「Valu0」と表示されています –
実際の値は何ですか?彼らは本当に 'value0'、 'value1'などですか? –
errいいえ。実際の値は、列に関連する文字列型です。たとえば、国はunited statesなど... – sunny