#lucene #umbraco #examine
#lucene #umbraco #исследовать
Вопрос:
Возможно ли выполнить поиск без учета регистра с использованием Examine Index и Lucene без изменения сохраненных данных? Я сохраняю статьи с идентификатором, заголовком, текстом и датой. Я не хочу индексировать свои данные в нижнем регистре, поскольку я хочу прочитать свои данные из индекса и отобразить их как есть. Таким образом, я могу пропустить шаг перехода к базе данных для получения данных. Сохранение одних и тех же данных дважды, один раз в том виде, в каком они есть, и один раз в нижнем регистре, не кажется правильным способом сделать это.
Есть предложения, как подойти к этому?
ExamineIndex.config
<IndexSet SetName="MySearchIndexSet" IndexPath="~/App_Data/TEMP/ExamineIndexes/MySearch/" >
<IndexUserFields>
<add Name="Id" />
<add Name="Title" />
<add Name="Text" />
<add Name="Date" />
</IndexUserFields>
ExamineSettings.config
<add name="MySearchIndexer" type="Examine.LuceneEngine.Providers.SimpleDataIndexer, Examine"
dataService="X.Service.MyIndexerService, X"
indexTypes="CustomData"
runAsync="false"
enableDefaultEventHandler="true"
analyzer="Lucene.Net.Analysis.WhitespaceAnalyzer, Lucene.Net"/>
<add name="MySearchSearcher" type="UmbracoExamine.UmbracoExamineSearcher, UmbracoExamine"
analyzer="Lucene.Net.Analysis.WhitespaceAnalyzer, Lucene.Net" enableLeadingWildcard="true" />
Ответ №1:
В lucene
анализаторах не изменяет ваши данные. Они определяют только способ индексирования данных. Таким образом, вы можете индексировать свои данные так, как хотите (не вводите данные в нижний регистр в своем коде), и извлекать значения такими, какие они есть.
В качестве дополнительного примечания в lucene
у вас могут быть поля с разными атрибутами (индексированные / неиндексированные, сохраненные / не сохраненные). Таким образом, вы можете добавить одно и то же поле дважды: одно только для извлечения (сохраненное и не проиндексированное) и одно для поиска (проиндексированное в нижнем регистре, но не сохраненное). Проверьте, examine
поддерживает ли эти типы полей.