我已閱讀過去幾天的大量頁面,但可以找到用於配置字段分析器的以下情況的任何樣本:
- 字段值可能同時包含?和*:
SOLR:如何在字段值中使用通配符和問號
- abcdef1;
- ab?de?2;
- abc?e *。
- 「ab ?? e *」和「ab *」 - 因爲結果應該解析所有文檔;
- 「ab1 *」 - 只有秒。
是否可以通過這種方式配置SOLR?
我已閱讀過去幾天的大量頁面,但可以找到用於配置字段分析器的以下情況的任何樣本:
- 字段值可能同時包含?和*:
SOLR:如何在字段值中使用通配符和問號
是否可以通過這種方式配置SOLR?
在這種情況下,您可能需要創建字段類型並將其應用於您的字段。
你的字段類型應該包含這樣的標記器和過濾器,它們將生成標記。
您可以在solr wiki頁面上閱讀有關使用標記器和過濾器的更多信息。
您還可以使用不同的分析器進行索引和查詢。
這也取決於您的要求。
我建議你試試下面的字段類型。
您可以在schema.xml中添加下面的字段類型。 使用「partial_search」fieldType作爲您要執行部分/通配符搜索的字段。
完成schema.xml更改後,您需要重新啓動服務器並重新索引數據。
<fieldType name="partial_search" class="solr.TextField" positionIncrementGap="100">
<analyzer type="index">
<tokenizer class="solr.KeywordTokenizerFactory"/>
<tokenizer class="solr.NGramTokenizerFactory" minGramSize="2" maxGramSize="10"/>
</analyzer>
<analyzer type="query">
<tokenizer class="solr.KeywordTokenizerFactory"/>
</analyzer>
</fieldType>
不允許使用多個標記器,因此它應該如下所示:
反正你的方法是良好的並覆蓋,大量鄰f變體,除了以下內容:field ='ab?de?2'和query ='ab1 *'。另一個:field ='ab *'和query ='ab1234'。 –
我認爲ab?de?2是不可能實現的......因爲你不能創建任何這樣的標記......你仍然可以嘗試從你的最後...我建議使用ngram你可以能夠實現部分或通配符搜索...當你有像'abhijit'這樣的文本...然後使用上面的字段類型,你將創建像ab,abh,abhi,abhij,Abhijit,Abhijit,bh,bhi,bhij ...等,如果你查詢..bhi ..然後你應該得到的結果爲abhijit ... –
請重新設置問題主體的格式。這很難遵循。 –
好的,現在應該更清楚了。 –