Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/search/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Search 如何使用与Solr匹配的ngrams_Search_Solr_Lucene_Nlp_N Gram - Fatal编程技术网

Search 如何使用与Solr匹配的ngrams

Search 如何使用与Solr匹配的ngrams,search,solr,lucene,nlp,n-gram,Search,Solr,Lucene,Nlp,N Gram,我在学习单曲。我想在Solr中使用ngrams。例如: 如果文档包含纽约汽车驾驶员,则该文档不应返回进行以下查询: /select?q=york /select?q=new /select?q=new car 但它应该返回以下查询 /select?q=new york /select?q=car /select?q=driver /select?q=car driver (应该把纽约看成是一个更好的结果的词。有单词序列需要考虑为一个单词。例如:纽约,汤姆克鲁斯等。这些词是预定义的;所有其他词

我在学习单曲。我想在Solr中使用
ngrams
。例如:


如果文档包含
纽约汽车驾驶员
,则该文档不应返回进行以下查询:

/select?q=york
/select?q=new
/select?q=new car
但它应该返回以下查询

/select?q=new york
/select?q=car
/select?q=driver
/select?q=car driver

(应该把纽约看成是一个更好的结果的词。有单词序列需要考虑为一个单词。例如:纽约,汤姆克鲁斯等。这些词是预定义的;所有其他词都应该被当作正常的)< /P>


如何使用Solr search实现这一点?

第一次尝试应该在术语“纽约”周围加上引号,然后再试一次

这将是你的第二次尝试

将标记器从
StandardTokenizerFactory
更改为
KeywordTokenizerFactory

更改后重新索引数据并再次查询

第三个选项是使用StrField类型,它不能进行任何标记化或分析,只能给出精确匹配的结果

不分析StrField类型,而是逐字索引/存储

 <fieldType name="string" class="solr.StrField" sortMissingLast="true" omitNorms="true"/>


所以你不想使用NGrams过滤器??事实上不需要n-gram过滤器。纽约就是一个例子。如果我有一组词,应该总是考虑一个词,如纽约/选择?q=“纽约”给出的结果。但我如何才能达到第一个要求?什么是第一个要求?该文件不应该返回以下查询:1)/选择?q=约克2)/选择?q=纽克…将标记器从StandardTokenizerFactory更改为KeywordTokenizerFactory,然后重试…strField不会有任何标记化,对吗?我认为它可能不起作用(检查后会确认)。我已经更新了问题。你能检查一下吗?谢谢