我正在solr core中对文档建立索引,但是有些文档没有建立索引。我不知道为什么这些没有索引。
当我索引一个字符串,然后索引该字符串的标记时, 那么只有标记正在索引,而整个文本却没有 索引。而如果我以相反的顺序索引,那就是:首先是文本的标记,然后是文本,那么文本将是索引。.
当我索引文档时
{"detected_language":"hi","searchstring":"कपड़ा धोने की
मशीन","translated_text":"washing machine"},
{"detected_language":"hi","searchstring":"कपड़ा","translated_text":"
"},
{"detected_language":"hi","searchstring":"धोने","translated_text":"
"},
{"detected_language":"hi","searchstring":"की","translated_text":"
"},
{"detected_language":"hi","searchstring":"मशीन","translated_text":"
"}
然后在solr core中仅索引4个文档,而不是5个文档。这四个文档是{कपड़ा ,धोने ,की,मशीन}
。
但是当我像这样进行索引编制时:
{"detected_language":"hi","searchstring":"कपड़ा","translated_text":"
"},
{"detected_language":"hi","searchstring":"धोने","translated_text":"
"},
{"detected_language":"hi","searchstring":"की","translated_text":"
"},
{"detected_language":"hi","searchstring":"मशीन","translated_text":"
"},
{"detected_language":"hi","searchstring":"कपड़ा धोने की
मशीन","translated_text":"washing machine"}
然后将所有5个文档编入索引。
我使用了以下字段:
<field name="searchstring" type="string_hi" indexed="true"
stored="true" required="true" omitNorms="true" multiValued="false"
/>
<field name="detected_language" type="string" indexed="true"
stored="true" omitNorms="true" multiValued="false"/>
<field name="translated_text" type="string" indexed="true"
stored="true" omitNorms="true" multiValued="false"/>
搜索字符串的fieldType是:
<fieldType name="string_hi" class="solr.TextField" positionIncrementGap="100">
<analyzer type="query">
<charFilter class="solr.HTMLStripCharFilterFactory"/>
<tokenizer class="solr.StandardTokenizerFactory"/>
</analyzer>
</fieldType>
我希望所有的搜索字符串都是索引。
答案 0 :(得分:1)
文档的uniqueKey
绝不能是分析类型-至少不是以多个标记结尾的类型(因此,除可能KeywordTokenizer
外,没有标记器)。您最终会遇到一个问题,否则现有文档将被覆盖。
将id
字段创建为string
,将其设置为uniqueKey
字段,然后使用copyField
将内容从searchstring
复制到{{1 }}。