2011-10-04 144 views
1

我是SOLR新手。我有個問題。我把數據放到SOLR通過XML,數據在德國,例如:Solr非英文索引和搜索

<?xml version="1.0" encoding="utf-8" ?> 
<add> 
<doc> 
    <field name="id">1</field> 
    <field name="name">Größen helfen, ihr Potenzial voll zu entfalten. Sicherheit und Zuverlässigkeit, Innovation und Integration sowie</field> 
</doc> 
</add> 

該文件保存成功,當我從管理面板搜索與查詢「的名字:*」返回,但是當我試圖用搜索這個查詢「名稱:*uverlässigkeit*」它不返回。 我認爲這是德語的問題,但我不知道如何解決這個問題。任何人都可以幫助我理解什麼是錯的。

回答

1

您無法執行以通配符開始的搜索 - 只有後綴通配符才允許在搜索查詢中(因爲否則它必須掃描與文檔關聯的所有術語)。如果您需要對前綴執行搜索,請對逆轉項進行索引(但請注意,如果您使用字段而不考慮搜索內容,則可能會丟棄其他功能),並使用後綴通配符。

另外請注意,您的應用程序容器(即Jetty,Tomcat等)必須能夠感知UTF-8(對於Tomcat,您必須對此進行特別配置),以便使用UTF-8字符串進行搜索正常。

+0

謝謝。我在server.xml(Tomcat)中添加了URIEncoding =「UTF-8」,現在搜索工作正常。 – vladimir

0

或者,它也可能是一個好主意,使用下面的過濾器在查詢/指數分析:

<filter class="solr.ASCIIFoldingFilterFactory"/> 

這將取代德國變音與他們的標準ASCII親戚,提高了匹配。

0

您使用了什麼請求處理程序?
標準請求處理程序不支持引導通配符查詢。

so name:uverlässigkeit將無法​​正常工作。

如果您想使用領先的通配符查詢,您需要檢查允許引用通配符的Extended Dismax解析器。 但是,通配符總是會影響性能。

與外部字符的匹配與solr一起工作良好。但是,如果使用ASCII Folding或ISO Latin Filter,則需要與索引和查詢時間的分析保持一致。

另外,正如fiskfisk提到的,你需要在Tomcat中添加編碼,如果使用它的web容器。

+0

對不起,但我不明白你的意思是「你使用的是什麼請求處理程序」,我默認情況下全部使用。你能給我一個鏈接,我可以閱讀這個。 – vladimir

+0

您使用qt param的請求處理程序不同。如果默認它不支持主導通配符。您需要使用deftype作爲edismax來檢查Extended Dismax查詢解析器。 – Jayendra