2

私はSolrを初めて使用し、タイトルと説明の2つのフィールドに基づいてオートコンプリート機能を実装したいと考えています。さらに、結果セットは、idやcategoryなどの他のフィールドによってさらに制限される必要があります。サンプルデータ:

Title: The brown fox lives in the woods
Description: The fox is found in the woods where brown leaves cover the ground. The animal's fur is brown in color and has a long tail.

望ましいオートコンプリートの結果:

brown fox
brown leaves
brown color

schema.xmlの関連するエントリは次のとおりです。

<fieldType name="autocomplete" class="solr.TextField" positionIncrementGap="100">
 <analyzer type="index">
   <tokenizer class="solr.WhitespaceTokenizerFactory"/>
   <filter class="solr.LowerCaseFilterFactory"/>
   <filter class="solr.EdgeNGramFilterFactory" minGramSize="2" maxGramSize="25" />
 </analyzer>
 <analyzer type="query">
   <tokenizer class="solr.WhitespaceTokenizerFactory"/>
   <filter class="solr.LowerCaseFilterFactory"/>
 </analyzer>
</fieldType>


<field name="id" type="int" indexed="true" stored="true"/>
<field name="category" type="string" indexed="true" stored="true"/>
<field name="title" type="text_general" indexed="true" stored="true"/>
<field name="description" type="text_general" indexed="true" stored="true"/>

<field name="ac-terms" type="autocomplete" indexed="true" stored="false" multiValued="true" omitNorms="true" omitTermFreqAndPositions="false" />
<copyField source="title" dest="ac-terms"/> 
<copyField source="description" dest="ac-terms"/>

クエリリクエスト:

http://localhost:9090/solr/select?q=(ac-terms:brown)
4

2 に答える 2

4

次の構成でShingleFilterFactoryを使用して解決しました。

<fieldType name="autocomplete" class="solr.TextField" positionIncrementGap="100">
  <analyzer>
    <tokenizer class="solr.StandardTokenizerFactory"/>
    <filter class="solr.LowerCaseFilterFactory"/>
    <filter class="solr.StopFilterFactory" ignoreCase="true" words="stopwords.txt"/>
    <filter class="solr.ShingleFilterFactory" maxShingleSize="2" outputUnigrams="false"/>
    <filter class="solr.RemoveDuplicatesTokenFilterFactory"/>
  </analyzer>
</fieldType>

<field name="ac-terms" type="autocomplete" indexed="true" stored="false" multiValued="true" omitNorms="true" omitTermFreqAndPositions="false" />
<copyField source="title" dest="ac-terms"/>
<copyField source="description" dest="ac-terms"/>

クエリリクエスト:

http://localhost:9090/solr/select?q=&facet=true&facet.field=ac-terms&facet.prefix=brown 

結果:

brown color
brown fox
brown leaves

これが誰かに役立つことを願っています

于 2012-11-01T23:56:12.163 に答える
0

フィールドを作成し、フィールドspellcheck_textのコピー機能を使用して、titledescriptionが自動的に宛先になるようにするのはspellcheck_textどうですか?

...インデックスに追加されたドキュメントの「ソース」フィールド、そのドキュメントの「宛先」フィールドに表示されるデータを複製するようにSolrに指示します。...元のテキストは、発信元フィールドまたは宛先フィールド用に構成されたアナライザーが呼び出される前に、「ソース」フィールドから「宛先」フィールドに送信されます。

http://wiki.apache.org/solr/SchemaXml#Copy_Fields

于 2012-11-01T10:50:44.943 に答える