2011-03-15 43 views
1

我想要實現類似Google的自動建議/使用Solr來完成。我有2個與此相關的問題:我們是否可以實施Solr自動建議,無需存儲字段,但只能編入索引

  1. 是否有可能,我們只指數,但不存儲在其自動完成是假設運行或假設運行條件部件的領域!

  2. 我們可以使用多個字段來獲取數據來填充自動建議,如果是,那麼這些字段只能用作索引而不是存儲!

如果有人應用了這種方法並嘗試過這樣的實現並且可以幫助我,那麼我將會非常棒。

感謝 賽義夫

回答

0

在SOLR爲自動完成,你必須確定你正在尋找對抗作爲存儲,以便返回的值NGRAM領域。

此外,我認爲SOLR中沒有辦法可以從多個字段獲取數據並從中抽取一個ngram。更簡單的方法是創建一個字段,並將您想要使用的所有其他字段的數據複製到該字段中,然後對其應用ngram標記。

1

您正在查找Solr TermsComponent,可以查詢它以返回索引字段中存在的術語及其頻率。具體而言,您需要terms.prefix參數,該參數將返回以您指定的前綴開頭的所有術語。

+0

我工作在http://websolr.com/guides/clients-rsolr-autocomplete-termscomponent與TermsComponent自動完成更詳細的指南 - 隨時打我了,而我的肉更多的問題拿出那份草稿。 – 2011-04-08 21:10:59

0

solr允許複製字段用作自動完成的索引。這是我在Solr自動建議/自動完成工作中的例子,<copyField source="name" dest="text"/>。很明顯,solr只會索引你將在自動完成中使用的字段。

另一方面,除非存儲字段,否則不能檢索字段,這裏指的是原始字段而不是複製字段。我建議複製可搜索字段ex:name,然後根據自己的查詢檢索所有其他字段。您需要創建搜索處理程序和請求處理程序的自定義。

稍後我會用完整的解決方案編輯它。

您可以使用這篇文章來了解有關該主題的更多信息,然後擴展您的解決方案。 http://solr.pl/en/2010/10/18/solr-and-autocomplete-part-1/

3

在Solr 4.0中有一個名爲Suggester的新組件。它使用拼寫檢查組件根據您現有的索引建立建議。

Suggester - Solr Wiki

我還在調整我的建議者組件字段類型,但這裏是我到目前爲止,這似乎是合作得非常好。

<fieldtype name="textSuggest" class="solr.TextField" positionIncrementGap="100"> 
     <analyzer type="index"> 
      <tokenizer class="solr.WhitespaceTokenizerFactory"/> 
      <filter class="solr.LowerCaseFilterFactory"/> 
      <filter class="solr.PatternReplaceFilterFactory" 
       pattern="(^[^A-Za-z0-9]*|[^A-Za-z0-9]*$)" replacement="" replace="all" /> 
      <filter class="solr.LengthFilterFactory" min="2" max="60" /> 
      <filter class="solr.StopFilterFactory" ignoreCase="true" words="stopwords.txt" enablePositionIncrements="false" /> 
      <filter class="solr.ShingleFilterFactory" maxShingleSize="3" outputUnigrams="true" outputUnigramIfNoNgram="true" /> 
      <filter class="solr.RemoveDuplicatesTokenFilterFactory"/> 
     </analyzer> 
     <analyzer type="query"> 
      <tokenizer class="solr.WhitespaceTokenizerFactory"/> 
      <filter class="solr.LowerCaseFilterFactory"/> 
      <filter class="solr.StopFilterFactory" ignoreCase="true" words="stopwords.txt" enablePositionIncrements="false" /> 
      <filter class="solr.ShingleFilterFactory" maxShingleSize="99" outputUnigrams="false" outputUnigramIfNoNgram="true" /> 
     </analyzer> 
    </fieldtype> 
+1

好的答案,我想指出的是Solr從3.1版本開始可用,不僅在4.0版本上。 – javanna 2012-02-15 23:22:55

相關問題