2012-04-02 48 views
2

我試圖使用Edismax分析器在Solr文本字段中查找包含星號/查詢標記的文檔。當我使用轉義(fq={!edismax}textfield:*\~*)搜索常用文本(fq={!edismax}textfield:*sometext*)或甚至其他special Lucene character時,一切正常。當在Edismax中使用前導通配符時,轉義的星號/查詢標記不會轉義

但是搜索*fq={!edismax}textfield:*\**)或?fq={!edismax}textfield:*\?*)時,這些字符似乎沒有進行轉義,因爲將返回所有的文件。我也嘗試URL encoding轉義字符(如\%2A而不是\*),但結果是相同的。

問題似乎關注領先通配符而已,因爲fq={!edismax}textfield:\**fq={!edismax}textfield:\?*返回正確的結果,但fq={!edismax}textfield:*\*fq={!edismax}textfield:*\?不(以及fq={!edismax}textfield:*sometext\*等)。

如何使用帶有星號通配符的Edismax搜索*/?

回答

0

引用星號適合我。該查詢在我的索引兩本書標題中一個獨立的星號:

title:"*" 

這裏是其中的一個標題:「是* *知道做,從官方陸軍領導手冊改編」。

我在Solr 3.3中使用edismax。

+0

我會爲我工作,如果我使用像WhitespaceTokenizerFactory的標記。不過,我需要搜索嚴格的短語重合並使用KeywordTokenizerFactory。因此,要查找字段文本的一部分,我必須使用通配符。 – dev4 2012-04-05 08:42:09

+0

您應該能夠得到嚴格的短語重合,而不必將每個字段值視爲單個標記。對令牌執行正則表達式本質上是一個全表掃描。這保證不會擴展。我推薦一種不同的方法。 – 2012-04-16 20:17:01