2013-08-20 2 views
1

В synonyms.txt, у меня есть:Solr: когда слово заменяется многословной синоним, порядок слов теряется

you're => you are 

При взгляде на то, что дает инструмент для анализа на «Потому что ты моя », он расширен в« Потому что вы мои », что отлично подходит для полнотекстового поиска, но это большая проблема для черепицы. Я задавался вопросом, не расширен ли расширенный текст в конце, но «вы из-за того, что мой» расширен в «вы, потому что мои», следующее слово вставлено между ними. Я также тестировал «Потому что ты мой», который расширен в «Потому что ты мой».

Любая идея о том, почему это может произойти?

Вот экран крышка инструмента анализа, чтобы сделать его 100% ясно: screencap

ответ

2

раздел запроса в схеме:

<analyzer type="query"> 
    <tokenizer class="solr.StandardTokenizerFactory"/> 
    <filter class="solr.WordDelimiterFilterFactory" generateWordParts="1" generateNumberParts="0" catenateWords="0" catenateNumbers="0" catenateAll="0" splitOnCaseChange="1"/> 
    <filter class="solr.LowerCaseFilterFactory"/> 
    <filter class="solr.DictionaryCompoundWordTokenFilterFactory" dictionary="wordlists/english-common-nouns.txt" minWordSize="5" minSubwordSize="4" maxSubwordSize="15" onlyLongestMatch="true"/> 
    <filter class="solr.StopFilterFactory" ignoreCase="true" words="stopwords.txt" enablePositionIncrements="true" /> 
    <filter class="solr.SynonymFilterFactory" synonyms="synonyms.txt" ignoreCase="true" expand="true"/> 
    <!-- this filter can remove any duplicate tokens that appear at the same position - sometimes 
     possible with WordDelimiterFilter in conjuncton with stemming. --> 
    <filter class="solr.RemoveDuplicatesTokenFilterFactory"/>   
    </analyzer> 

я просто позволил WDF сделать его лексемизацию, вы => вы повторно , В synonyms.txt я определил:

you re => you are 

, который не является самым элегантным способом, но он работает, то есть сохраняет маркеры в порядке, что вам нужно.

screenshot to prove

+1

Brilliant. Кажется, что если вы замените 2 токена на 2 других токена, то это не изменит порядок терминов в инструменте анализа, и индексы будут такими, как должны. –

+0

О запросе, все еще есть некоторые проблемы. вот запрос: rawquerystring ":" search_authtit: (потому что ты мой) "," querystring ":" search_authtit: (потому что ты мой) "," parsedquery ":" + search_authtit: потому что + MultiPhraseQuery (search_authtit: \ "(вы, вы) are \") + search_authtit: mine "," parsedquery_toString ":" + search_authtit: потому что + search_authtit: \ "(вы являетесь): \" + search_authtit: mine ". и мне, возможно, придется расширяться при составлении запроса. В любом случае, это будет другой вопрос ... Спасибо за этот замечательный ответ! –

Смежные вопросы