1
我在SQL Server數據庫中存儲了120000條酒記錄。到現在爲止,我已通過執行以下SQL成功搜索了葡萄酒名稱:如何用空格實現Solr不區分大小寫和不區分變音的子字符串搜索?
WHERE (LOWER(Wine.name) LIKE '%" + (searchString) + "%'")
我現在正在切換到使用Solr。我想搜索「clos rene」並獲得「ClosRéné」。但是,Solr將返回所有匹配'Clos'和匹配'Réné'的記錄的記錄。我曾嘗試以下字段定義:
<fieldType name="c_text" class="solr.TextField" positionIncrementGap="100">
<analyzer type="index">
<tokenizer class="solr.KeywordTokenizerFactory"/>
<filter class="solr.LowerCaseFilterFactory"/>
</analyzer>
<analyzer type="query">
<tokenizer class="solr.KeywordTokenizerFactory"/>
<filter class="solr.LowerCaseFilterFactory"/>
</analyzer>
</fieldType>
可能有人請幫助我確定正確的字段類型,以便我可以重現我上面的SQL查詢返回與空格多個單詞不區分大小寫,不區分重音結果在?之間?
我也嘗試過使用字段類型'字符串'進行通配符搜索,但是我無法使其作爲不區分大小寫的工作。
謝謝,但那並沒有解決我的問題。現在,如果我查詢: wineName:* clos * 我得到所有「clos」葡萄酒,無論大小寫或重音,但我不能搜索: wineName:* clos rene *或wineName:* clos r * 我想讓用戶搜索雙名或多名的葡萄酒。那可能嗎? – user3072631
現在我明白你在前面有通配符,看看我更新的分析器部分。讓我知道。 – Arun
感謝您的更新。它工作得很好。 – user3072631