我需要找到一个解决方案来索引我的基于字典的文档。这本词典收录了300万个短语。我有一个很大的挑战,那就是:我需要基于这个字典对文档进行索引,同时考虑到单词的排列也是可以接受的。
例如:我的字典中有一个短语是“美丽的大花园”,但如果文档中包含“美丽的大花园”,它应该被索引为“美丽的大花园”。我想了很多,但我找不到一个正常的解决方案在solr中,除了使用同义词过滤器和单词排列如下:美丽的大花园=>花园大美丽,美丽的花园大,大美丽的花园,...但这是不可能的,因为我的字典包含300万个短语,其中许多短语超过5个单词,所以计算5!并使同义词过滤器是不可能的。有没有人能帮我出个好主意,我是solr的初学者,应该有办法的。
提前感谢Afrooz
发布于 2015-08-24 04:13:17
无论是在字典中还是在查找潜在的匹配项时,都要按字母顺序对短语进行排序。这样你只需要检查一个排列。
发布于 2015-08-24 23:39:38
一个简单的解决方案是将solr中的默认操作更改为AND。您也可以在查询中在请求处理程序中指定相同的值。
在查询中使用:
q.op=AND在搜索处理程序中更新:
<requestHandler name="/select_and" class="solr.SearchHandler">
<lst name="defaults">
<str name="q.op">AND</str>您可以通过空格将输入文本拆分为标记,然后使用每个带有AND运算符的术语构成查询。例如:
input text: beautiful big garden
search query: q=field:beautiful AND field:big AND field:garden使用以下FieldType为您的数据建立索引:
<fieldType name="text_general" class="solr.TextField">
<analyzer>
<tokenizer class="solr.KeywordTokenizerFactory"/>
<filter class="solr.LowerCaseFilterFactory"/>
</analyzer>
</fieldType>https://stackoverflow.com/questions/32171008
复制相似问题