我想要實現類似Google的自動建議/使用Solr來完成。我有2個與此相關的問題:我們是否可以實施Solr自動建議,無需存儲字段,但只能編入索引
是否有可能,我們只指數,但不存儲在其自動完成是假設運行或假設運行條件部件的領域!
我們可以使用多個字段來獲取數據來填充自動建議,如果是,那麼這些字段只能用作索引而不是存儲!
如果有人應用了這種方法並嘗試過這樣的實現並且可以幫助我,那麼我將會非常棒。
感謝 賽義夫
我想要實現類似Google的自動建議/使用Solr來完成。我有2個與此相關的問題:我們是否可以實施Solr自動建議,無需存儲字段,但只能編入索引
是否有可能,我們只指數,但不存儲在其自動完成是假設運行或假設運行條件部件的領域!
我們可以使用多個字段來獲取數據來填充自動建議,如果是,那麼這些字段只能用作索引而不是存儲!
如果有人應用了這種方法並嘗試過這樣的實現並且可以幫助我,那麼我將會非常棒。
感謝 賽義夫
在SOLR爲自動完成,你必須確定你正在尋找對抗作爲存儲,以便返回的值NGRAM領域。
此外,我認爲SOLR中沒有辦法可以從多個字段獲取數據並從中抽取一個ngram。更簡單的方法是創建一個字段,並將您想要使用的所有其他字段的數據複製到該字段中,然後對其應用ngram標記。
您正在查找Solr TermsComponent,可以查詢它以返回索引字段中存在的術語及其頻率。具體而言,您需要terms.prefix
參數,該參數將返回以您指定的前綴開頭的所有術語。
solr允許複製字段用作自動完成的索引。這是我在Solr自動建議/自動完成工作中的例子,<copyField source="name" dest="text"/>
。很明顯,solr只會索引你將在自動完成中使用的字段。
另一方面,除非存儲字段,否則不能檢索字段,這裏指的是原始字段而不是複製字段。我建議複製可搜索字段ex:name,然後根據自己的查詢檢索所有其他字段。您需要創建搜索處理程序和請求處理程序的自定義。
稍後我會用完整的解決方案編輯它。
您可以使用這篇文章來了解有關該主題的更多信息,然後擴展您的解決方案。 http://solr.pl/en/2010/10/18/solr-and-autocomplete-part-1/
在Solr 4.0中有一個名爲Suggester的新組件。它使用拼寫檢查組件根據您現有的索引建立建議。
我還在調整我的建議者組件字段類型,但這裏是我到目前爲止,這似乎是合作得非常好。
<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>
好的答案,我想指出的是Solr從3.1版本開始可用,不僅在4.0版本上。 – javanna 2012-02-15 23:22:55
我工作在http://websolr.com/guides/clients-rsolr-autocomplete-termscomponent與TermsComponent自動完成更詳細的指南 - 隨時打我了,而我的肉更多的問題拿出那份草稿。 – 2011-04-08 21:10:59