Поиск по предложению (автозаполнение) в solr с использованием NGrams (одно сопоставление для компонента предложения)

Я работаю над автоматическим поиском завершения с помощью solr с помощью EdgeNGrams. Я использую solr 3.3, и я хотел бы использовать параметры сортировки из подсказки в качестве решения для автозаполнения при поиске с несколькими терминами. К сожалению, Подсказчик возвращает только одно сопоставление для поиска по нескольким терминам.

Если пользователь ищет имена сотрудников, следует применять автозаполнение. т.е., хотите результаты, такие как поиск Google. Это работает нормально для меня ниже конфигурации.

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 / offer /? Q = майкл

   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>

Это хорошо работает для меня. Когда я ищу «Майкл Ф», получаю ответ, как показано ниже. (http: // local: 8080 / test / offer /? q = michael f)

Отклик :

 <?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>.

Поэтому, когда я ищу с "Майкл Ф" тогда я должен получить «Майкл Форе» и «сила Майкла»; только. Поступление данных начинается с "f". Пожалуйста, предложите мне, если что-то не так в моих настройках конфигурации в solr.

Заранее спасибо,

Анил.

Ответы на вопрос(0)

Ваш ответ на вопрос