2016-09-14 4 views
0

このシナリオでは、不明な住所が未知のアドレス形式の文字列形式で受信されます。私たちの必要性は、すべてのフィールドにわたって指定された郵便番号で検索を実行し、クエリに最もよくマッチするものを見つけることです。Solrに4つの必須フィールドが存在する場合にのみ結果を返す方法

ただし、4つの必須フィールドに完全一致がない場合、SOLRは同様の結果を返します(少なくとも1つの必須フィールドについて)、結果は表示されません。

4つの必須フィールドは次のようBuildingNumber、LocPressName、郡とPostalDistrictはschema.xmlファイル内の他の検索フィールドで定義されている -

<field name="uid" stored="true" indexed="true" type="uuid" default="NEW"/> 
<field name="UnitNumber" stored="true" indexed="true" type="text_general"/> 
<field name="UnitName" stored="true" indexed="true" type="text_general"/> 
<field name="BuildingNumber" stored="true" indexed="true" type="exactish"/> 
<field name="BuildingName" stored="true" indexed="true" type="text_general"/> 
<field name="LocPressName" stored="true" indexed="true" type="exactish"/> 
<field name="PostalDistrict" stored="true" indexed="true" type="exactish"/> 
<field name="County" stored="true" indexed="true" type="exactish"/> 
<field name="AddressId" stored="true" indexed="true" type="text_general"/> 
<field name="ExchangeCode" stored="true" indexed="true" type="text_general"/> 
<field name="PreviousCustomerName" stored="true" indexed="true" type="text_general"/> 
<field name="Eircode" stored="true" indexed="true" type="text_general"/> 

私はSolrのにかなり新しいですし、私はどのように確認していませんすべての4つの必須フィールドの一致が検出された場合にのみ最良の結果を生成するこのクエリを生成します。

答えて

0

exactishフィールドの正確なタイプがないと、それは難しいですが、それがStrFieldであると仮定します。基本的な、明示的なバージョン:

q=(BuildingNumber:18 AND LocPressName:Foo AND 
County:Forthershire AND PostalDistrict:Bar) AND searchField:Query 

.. searchFieldすべてがあなたがtext_generalフィールドがコピーされているように、検索したいフィールドがあります。必要に応じてこれを他のすべてのフィールドに置き換えることができます。

別のオプション:

q=Query&defType=edismax&qf=UnitNumber UnitName .. etc&fq=BuildingNumber:18 AND 
LocPressName:Foo AND County:Forthershire AND PostalDistrict:Bar 

これは、同じように動作しますが、edismaxクエリパーサーを使って、自由形式の照会が可能になります。 fqは結果セットにフィルタを適用します。にはがあり、結果セットで考慮するフィルタと一致します。ただし、文書の採点方法には影響しません。

+0

ありがとうございますが、指定されたアドレスを分割しているようですが、これは不可能です。問題は、未知のフォーマットの不明な文字列としてアドレスを受け取ることです。 –

+0

それでは、スキーマの特定のフィールドにはどのようなものがありますか? – MatsLindh

+0

私たちは、必須フィールドを重視することなく、ドキュメントとのベストマッチを得ています。意味、必須フィールドには、指定された文字列(未知の形式)のデータとは関係のない値が含まれています - 私は例を投稿します... –

関連する問題