Suggester-Suche (automatische Vervollständigung) in solr mit NGrams (eine Kollation für Suggester-Komponente)

Ich arbeite an der automatischen Vervollständigungssuche mit solr unter Verwendung von EdgeNGrams. Ich verwende solr 3.3 und möchte Kollatierungen von suggester als automatische Vervollständigungslösung für die Suche nach mehreren Begriffen verwenden. Leider gibt der Suggester nur eine Kollatierung für eine Suche mit mehreren Begriffen zurück

Wenn der Benutzer nach Namen von Mitarbeitern sucht, sollte die automatische Vervollständigung angewendet werden. Das heißt, Sie möchten Ergebnisse wie die Google-Suche. Es funktioniert gut für mich unter Konfigurationen.

schema.xml
<fieldType name="edgytext" class="solr.TextField" positionIncrementGap="100" omitNorms="true">
    <analyzer type="index">
      <tokenizer class="solr.KeywordTokenizerFactory" />
      <filter class="solr.LowerCaseFilterFactory" /> 
  <filter class="solr.RemoveDuplicatesTokenFilterFactory"/>
  </analyzer>
<analyzer type="query">
 <tokenizer class="solr.KeywordTokenizerFactory" /> 
 <filter class="solr.LowerCaseFilterFactory" />
 <filter class="solr.EdgeNGramFilterFactory" minGramSize="1" maxGramSize="15" side="front" />    
</analyzer>

<field name="title" type="edgytext" indexed="true" stored="true" omitNorms="true" omitTermFreqAndPositions="true"/>
<field name="empname" type="edgytext" indexed="true" stored="true" omitNorms="true" omitTermFreqAndPositions="true" />

<field name="autocomplete_text" type="edgytext" indexed="true" stored="false"  multiValued="true" omitNorms="true" omitTermFreqAndPositions="false" />
<copyField source="empname" dest="autocomplete_text"/>

<copyField source="title" dest="autocomplete_text"/> 

URL: $ http: // local: 8080 / test / suggest /? Q = michael

   Result :
   <?xml version="1.0" encoding="UTF-8" ?> 
<response>
<lst name="responseHeader">
<int name="status">0</int> 
<int name="QTime">1</int> 
</lst>
<result name="response" numFound="0" start="0" /> 
<lst name="spellcheck">
<lst name="suggestions">
<lst name="michael">
<int name="numFound">9</int> 
<int name="startOffset">0</int> 
<int name="endOffset">7</int> 
<arr name="suggestion">
  <str>michael bolton</str> 
  <str>michael foret</str> 
  <str>michael force</str>
  <str>michael w. smith featuring andrae crouch</str> 
</arr>
</lst>
<str name="collation">michael bolton</str> 
</lst>
</lst>
</response>

Es funktioniert gut für mich. Wenn ich mit "michael f" suche, bekomme ich eine Antwort wie unten. (http: // local: 8080 / test / suggest /? q = michael f)

Antwort :

 <?xml version="1.0" encoding="UTF-8" ?> 
 <response>
 <lst name="responseHeader">
 <int name="status">0</int> 
 <int name="QTime">1</int> 
 </lst>
 <result name="response" numFound="0" start="0" /> 
<lst name="spellcheck">
<lst name="suggestions">
<lst name="michael">
<int name="numFound">9</int> 
<int name="startOffset">0</int> 
<int name="endOffset">7</int> 
<arr name="suggestion">
  <str>michael bolton</str> 
  <str>michael foret</str> 
  <str>michael force</str> 
  <str>michael w. smith featuring andrae crouch</str> 
   .....
</arr>
</lst>
<lst name="f">
<int name="numFound">10</int> 
<int name="startOffset">8</int> 
<int name="endOffset">9</int> 
<arr name="suggestion">
  <str>f**k the facts</str> 
  <str>fairest lord jesus</str> 
  <str>franz ferdinand</str> 
  <str>françois rauber</str> 
  .........
</arr>
</lst>
<str name="collation">michael bolton f**k the facts</str> 
</lst>
</lst>
</response>.

Wenn ich also mit "michael f" suche, sollte ich nur "michael foret" und "michael force" erhalten. Die Dateneingabe beginnt mit "f". Bitte schlagen Sie mir vor, wenn etwas in meinen Konfigurationseinstellungen in solr nicht stimmt.

Danke im Voraus,

Anil.

Antworten auf die Frage(0)

Ihre Antwort auf die Frage