我有一个连字符的词。就我而言,它是“重用”。我希望能够将其与“重用”、“重用”和“重用”相匹配。
如果我使用WordDelimiterFilterFactory
withcatenateAll=1
那么它会将“重用”转换为“重用”。这不包括搜索“重用”的情况。
除此之外,“重用”这个词被用作同义词,SynonymFilterFactory
因此解决方案也必须与它一起使用。
如果我的同义词文件显示“re-use => other thing”,那么当我输入“re-use”或“reuse”或“re use”时,我希望能够匹配“other thing”。我已经尝试过实际创建一个同义词条目,例如“重用 => 重用”。这会导致匹配包含非连字符版本的文档,但不匹配“其他东西”(我不介意对匹配“重新”或“使用”过于宽容)。
我可以为这个词添加同义词,但我想要一个通用的解决方案。有什么明显的我错过了吗?
编辑:
我有 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
这行不通。我认为lexk的回答表明它会?