我的停用词没有按预期工作。
以下是我的架构的一部分:
在stopwords.txt文件中,我有以下单词:the、is、a;同时,在我的字段中有以下数据:
deal_description - 这是我的描述 deal_title_terms - 这是交易标题的术语(将被分成术语)
当我尝试搜索deal_description时: 示例1:“deal_description:his is the m” - 我期望返回带有deal_description“这是我的描述”的文档。 示例2:“deal_description:is th” - 我期望没有找到任何内容,因为“is”和“the”是停用词。
当我尝试搜索deal_title_terms时: 示例1:“deal_title_terms:is” - 我期望没有找到任何内容,因为“is”是停用词。 示例2:“deal_title_terms:is the deal” - 我期望忽略“is”和“the”,并且能够找到术语“deal”。 示例3:“deal_title_terms:title a terms” - 我期望忽略“a”,并且能够找到术语“title terms”。
问题1:为什么停用词对于“deal_description”字段无效? 问题2:为什么在“deal_title_terms”字段中,停用词没有从我的查询中删除?(当我尝试查找title a terms时,它不会找到“title terms”术语) 问题3:是否有任何方法可以在搜索结果中显示停用词,但防止它们被搜索?例如: 数据:这是很酷的搜索引擎 搜索查询:“is coo” -> 返回“这是很酷的搜索引擎” 搜索查询:“is” -> 返回空 搜索查询:“This coll” -> 返回“这是很酷的搜索引擎”
问题4:我在哪里可以找到详细描述(可能带有示例),说明停用词在solr中的工作原理?因为它看起来像魔法。
<fieldType name="text_general" class="solr.TextField">
<analyzer type="index">
<tokenizer class="solr.KeywordTokenizerFactory"/>
<filter class="solr.StopFilterFactory" ignoreCase="true" words="stopwords.txt" enablePositionIncrements="true"/>
<filter class="solr.LowerCaseFilterFactory"/>
</analyzer>
<analyzer type="query">
<tokenizer class="solr.KeywordTokenizerFactory"/>
<filter class="solr.StopFilterFactory" ignoreCase="true" words="stopwords.txt" enablePositionIncrements="true"/>
<filter class="solr.LowerCaseFilterFactory"/>
</analyzer>
</fieldType>
<fieldType class="solr.TextField" name="text_auto">
<analyzer type="index">
<charFilter class="solr.HTMLStripCharFilterFactory"/>
<tokenizer class="solr.StandardTokenizerFactory"/>
<filter class="solr.StopFilterFactory" ignoreCase="true" words="stopwords.txt" enablePositionIncrements="false"/>
<filter class="solr.LowerCaseFilterFactory"/>
<filter class="solr.RemoveDuplicatesTokenFilterFactory"/>
<filter class="solr.ShingleFilterFactory" maxShingleSize="3" outputUnigrams="true" outputUnigramsIfNoShingles="false"/>
</analyzer>
<analyzer type="query">
<filter class="solr.RemoveDuplicatesTokenFilterFactory"/>
<tokenizer class="solr.StandardTokenizerFactory"/>
<filter class="solr.StopFilterFactory" ignoreCase="true" words="stopwords.txt" enablePositionIncrements="false"/>
</analyzer>
</fieldType>
<field name="deal_title_terms" type="text_auto" indexed="true" stored="false" required="false" multiValued="true"/>
<field name="deal_description" type="text_general" indexed="true" stored="true" required="false" multiValued="false"/>
在stopwords.txt文件中,我有以下单词:the、is、a;同时,在我的字段中有以下数据:
deal_description - 这是我的描述 deal_title_terms - 这是交易标题的术语(将被分成术语)
当我尝试搜索deal_description时: 示例1:“deal_description:his is the m” - 我期望返回带有deal_description“这是我的描述”的文档。 示例2:“deal_description:is th” - 我期望没有找到任何内容,因为“is”和“the”是停用词。
当我尝试搜索deal_title_terms时: 示例1:“deal_title_terms:is” - 我期望没有找到任何内容,因为“is”是停用词。 示例2:“deal_title_terms:is the deal” - 我期望忽略“is”和“the”,并且能够找到术语“deal”。 示例3:“deal_title_terms:title a terms” - 我期望忽略“a”,并且能够找到术语“title terms”。
问题1:为什么停用词对于“deal_description”字段无效? 问题2:为什么在“deal_title_terms”字段中,停用词没有从我的查询中删除?(当我尝试查找title a terms时,它不会找到“title terms”术语) 问题3:是否有任何方法可以在搜索结果中显示停用词,但防止它们被搜索?例如: 数据:这是很酷的搜索引擎 搜索查询:“is coo” -> 返回“这是很酷的搜索引擎” 搜索查询:“is” -> 返回空 搜索查询:“This coll” -> 返回“这是很酷的搜索引擎”
问题4:我在哪里可以找到详细描述(可能带有示例),说明停用词在solr中的工作原理?因为它看起来像魔法。