我有一個帶連字符的單詞。在我的情況下,它是「重用」。我希望能夠匹配它的「重用」,「重用」和「重用」。在SOLR中使用帶連字符的單詞
如果我使用WordDelimiterFilterFactory
和catenateAll=1
,那麼它會將「重用」轉換爲「重用」。這不包括搜索「重新使用」的情況。
除此之外,「重複使用」這個詞被用作SynonymFilterFactory
的同義詞,因此解決方案也必須使用它。
如果我的同義詞文件顯示「re-use => other thing」,那麼當我輸入「re-use」或「reuse」或「re use」時,我希望能夠匹配「other thing」。我嘗試過創建一個同義詞條目,例如「re use => re-use」。這會導致匹配包含非複合版本的文檔,但不匹配「其他事物」(我並不介意對「re」或「use」進行匹配)。
我可以添加這個詞的同義詞,但我想要一個通用的解決方案。有什麼明顯的我錯過了嗎?
編輯:
我有4個文件:
- 「東西」
- 「再利用」
- 「重用」
- 「重用」
我想搜索這些條款中的任何一個並返回所有文檔。我的模式的相關位:
<fieldType name="text_general" class="solr.TextField" positionIncrementGap="100">
<analyzer type="index">
<tokenizer class="solr.WhitespaceTokenizerFactory"/>
<filter class="solr.WordDelimiterFilterFactory" catenateAll="1" preserveOriginal="1" />
<filter class="solr.LowerCaseFilterFactory"/>
<filter class="solr.SynonymFilterFactory" synonyms="synonyms.txt" ignoreCase="true" expand="true"/>
<filter class="solr.PorterStemFilterFactory"/>
</analyzer>
<analyzer type="query">
<tokenizer class="solr.WhitespaceTokenizerFactory"/>
<filter class="solr.WordDelimiterFilterFactory" catenateAll="1" preserveOriginal="1" />
<filter class="solr.LowerCaseFilterFactory"/>
<filter class="solr.PorterStemFilterFactory"/>
</analyzer>
</fieldType>
如果我的同義詞文件看起來像這樣,一切都按預期工作。
re use, reuse, thing
但是,我想表示「重用」和「重用」是同義詞。我也想說「重用」和「事物」,還有很多其他的東西都是同義詞。所以我試過這個:
re use, reuse
reuse, thing
這是行不通的。我認爲雷克斯的回答暗示它會呢?
謝謝。這就是我的想法,但這不是我所期望的。看我的編輯。 – Joe