2013-03-23 79 views
0

任何短語索引功能是否有Solr中的標記生成器/過濾器,可以索引一些短語(我猜的文件的形式)作爲一個單一的令牌?此外,在分析儀鏈中放置這個產品的任何建議都是非常有用的。Solr中

回答

1

SynonymFilterFactory應該對你有所幫助。下面是從頁的例子:

#Explicit mappings match any token sequence on the LHS of "=>" 
#and replace with all alternatives on the RHS. These types of mappings 
#ignore the expand parameter in the schema. 
#Examples: 
i-pod, i pod => ipod 
sea biscuit, sea biscit => seabiscuit 

在索引時間,左邊的短語會被替換右邊的一個記號。存儲您的映射在名爲syn.txt文件,你可以有分析鏈(從Solr的維基鏈接再次)如下:

<fieldtype name="syn" class="solr.TextField"> 
     <analyzer> 
      <tokenizer class="solr.WhitespaceTokenizerFactory"/> 
      <filter class="solr.SynonymFilterFactory" synonyms="syn.txt" 
        ignoreCase="true" expand="false"/> 
     </analyzer> 
</fieldtype> 
+0

謝謝,但同義詞不完全是我正在尋找。例如,我想索引「紐約」作爲一個單詞,以便「新」或「約克」不會匹配。 – kee 2013-03-24 04:37:50

+0

如果您在syn.txt中保留'new york => newyork'並且不要將它拆分爲在索引時間分析器鏈中進一步創建更多的標記,那麼搜索'new'或'york'將不會比賽。然而,要匹配包含'new york'的文檔,用戶必須發出一個詞組查詢「new york」,並且您應該在查詢時使用同義詞過濾器。並且返回的文檔將包含沒有空格的'newyork'。順便說一句,我搜索'新'在谷歌和它給了'紐約時代'前10名,所以它不是太糟糕了? :-) – arun 2013-03-24 05:48:17

+0

我試過了。我的發現是,Solr似乎仍然分別對「新」和「約克」進行索引。我試過expand = true和expand = false,沒有更改?任何洞察哪裏出了問題? – kee 2013-03-25 22:33:34

1

您需要使用這個TokenizerFactory

如果要檢測的句子爲好,那麼你可以看看solr.UAX29URLEmailTokenizerFactory。

如果輸入的是在一個特定的模式,你可以使用solr.PatternTokenizerFactory。

如果你想索引整個輸入作爲一個字段,你可以使用solr.KeywordTokenizerFactory。