Добро пожаловать, Гость
Поиск и индексирование
syberside Offline
#1 Оставлено : 9 сентября 2014 г. 14:25:34(UTC)
Ранг: Member

Группы: Registered, Тестеры
Зарегистрирован: 25.08.2014(UTC)
Сообщений: 17
Откуда: Екатеринбург

Поблагодарили: 6 раз в 4 постах
Что-то никак не пойму, как регулируется индексирование полей.

Сначала подумал что поля отмеченные как "Обобщающее поле", но похоже что нет.

Кто нибудь может объяснить, какие поля в итоге попадают в HighlightedTitle, какие в HighlightedBody, а какие вообще не индексируются.

Нагуглить ответ самостоятельно не получилось.
syberside Offline
#2 Оставлено : 9 сентября 2014 г. 14:28:05(UTC)
Ранг: Member

Группы: Registered, Тестеры
Зарегистрирован: 25.08.2014(UTC)
Сообщений: 17
Откуда: Екатеринбург

Поблагодарили: 6 раз в 4 постах
Ничего не понимаю...
Скрываю поле в списке содержимого и оно появляется в HighlightedBody

Возможно дело в провайдере бд (сейчас xml)?

Up
Нашел вот тут
Цитата:
Indexable: Include this field in the Lucene.NET full text search index.


Но на сайте kooboo в документации этого поля нет (у меня соответственно тоже)

Up
В файле с конфигурацией (например Cms_Data\Contents\SampleSite\Schemas\Article\settings.config) настройка есть.
<Indexable>true</Indexable>
попробовал вручную изменить на false - никакого эффекта =(
Ella Offline
#3 Оставлено : 9 сентября 2014 г. 15:09:12(UTC)

Ранг: Advanced Member

Группы: Registered, Тестеры
Зарегистрирован: 07.05.2012(UTC)
Сообщений: 241
Откуда: Россия

Сказал(а) «Спасибо»: 25 раз
Поблагодарили: 67 раз в 61 постах
Настройка была в старой версии (вероятно остались "хвосты" в конфигурационном файле).
Я так понимаю, что в HighlightedBody попадает то поле, в котором была найдена искомая строка...
syberside Offline
#4 Оставлено : 9 сентября 2014 г. 16:21:56(UTC)
Ранг: Member

Группы: Registered, Тестеры
Зарегистрирован: 25.08.2014(UTC)
Сообщений: 17
Откуда: Екатеринбург

Поблагодарили: 6 раз в 4 постах
Ella написал:
в HighlightedBody попадает то поле


не совсем.

Там содержимое появляется "содержимое" статьи, даже если совпадений нет.

допустим у меня 4 поля: фио, должность, порядок, фото

Если я убираю из списка содержимого поле фото - оно выводится в результатах поиска.

Как то совсем не правильно, похоже баг
Ella Offline
#5 Оставлено : 9 сентября 2014 г. 18:50:53(UTC)

Ранг: Advanced Member

Группы: Registered, Тестеры
Зарегистрирован: 07.05.2012(UTC)
Сообщений: 241
Откуда: Россия

Сказал(а) «Спасибо»: 25 раз
Поблагодарили: 67 раз в 61 постах
Может и правда баг. Я особо встроенным поиском не пользовалась. Потестировать бы на разных провайдерах.
Ella Offline
#6 Оставлено : 9 сентября 2014 г. 20:33:45(UTC)

Ранг: Advanced Member

Группы: Registered, Тестеры
Зарегистрирован: 07.05.2012(UTC)
Сообщений: 241
Откуда: Россия

Сказал(а) «Спасибо»: 25 раз
Поблагодарили: 67 раз в 61 постах
Тема на официальном форуме - http://forum.kooboo.com/...earch-and-indexing.aspx
Также можно добавлять репорты на GitHub, как мне показалось, на них разработчики быстрее реагируют - https://github.com/Kooboo/CMS/issues
syberside Offline
#7 Оставлено : 18 сентября 2014 г. 13:42:20(UTC)
Ранг: Member

Группы: Registered, Тестеры
Зарегистрирован: 25.08.2014(UTC)
Сообщений: 17
Откуда: Екатеринбург

Поблагодарили: 6 раз в 4 постах
Напишу тут, дабы не плодить темы.

Можно ли сделать контент модуля доступным для поиска?

В настройках поиска можно указать папку для индексирования.

Я так понимаю, надо либо как-то сделать свой модуль доступным для выбора в настройках индексирования, либо писать свой велосипед.
Ella Offline
#8 Оставлено : 19 сентября 2014 г. 8:43:02(UTC)

Ранг: Advanced Member

Группы: Registered, Тестеры
Зарегистрирован: 07.05.2012(UTC)
Сообщений: 241
Откуда: Россия

Сказал(а) «Спасибо»: 25 раз
Поблагодарили: 67 раз в 61 постах
А для хранения контента модуля используются собственные хранилища или стандарные "папки контента"?
syberside Offline
#9 Оставлено : 19 сентября 2014 г. 11:26:37(UTC)
Ранг: Member

Группы: Registered, Тестеры
Зарегистрирован: 25.08.2014(UTC)
Сообщений: 17
Откуда: Екатеринбург

Поблагодарили: 6 раз в 4 постах
Ella написал:
А для хранения контента модуля используются собственные хранилища или стандарные "папки контента"?


Свое хранилище.
Покопавшись в сорцах кубу нашел SearchHelper, который выполняет как поиск, так и управление индексами.
Насколько я понимаю, можно использовать его? Или есть другой способ?

По поводу использования стандартных папок: как при включении модуля создать "стандартный" тип текстового содержимого и папку для него я разобрался. Дальше можно включить поиск через админку.
Одно огорчает - для скрытых папок в админке нельзя включить индексирование.
Не подскажите, как при установке модуля добавить еще и правило поиска (мелочь, а приятно было бы :-) )?
Ella Offline
#10 Оставлено : 22 сентября 2014 г. 10:34:18(UTC)

Ранг: Advanced Member

Группы: Registered, Тестеры
Зарегистрирован: 07.05.2012(UTC)
Сообщений: 241
Откуда: Россия

Сказал(а) «Спасибо»: 25 раз
Поблагодарили: 67 раз в 61 постах
Боюсь, что не подскажу. Если найдете оптимальное решение данного вопроса, напишите, думаю всем будет полезно :)
syberside Offline
#11 Оставлено : 22 сентября 2014 г. 12:30:37(UTC)
Ранг: Member

Группы: Registered, Тестеры
Зарегистрирован: 25.08.2014(UTC)
Сообщений: 17
Откуда: Екатеринбург

Поблагодарили: 6 раз в 4 постах
Ella написал:
Боюсь, что не подскажу. Если найдете оптимальное решение данного вопроса, напишите, думаю всем будет полезно :)


Напишу как сделаю)

По моему первому вопросу опять таки сам нашел ответ:
Файл CMS-master\Kooboo.CMS\Kooboo.CMS.Sites\Search\TextContentConverter.cs
строка 53
Цитата:

string title = textContent.GetSummary();

и строка 79
Цитата:

                    if (index && !column.Summarize)
                    {
                        bodyBuilder.AppendFormat(" {0} ", Kooboo.StringExtensions.StripAllTags(indexValue.ToString()));
                    }


т.е., как я и писал на официальном форуме, при поиске колонки помеченные как summary попадают в заголовок, а не помеченные в тело поиска
1 пользователь поблагодарил syberside за этот пост.
Ella оставлено 22.09.2014(UTC)
syberside Offline
#12 Оставлено : 22 сентября 2014 г. 13:37:52(UTC)
Ранг: Member

Группы: Registered, Тестеры
Зарегистрирован: 25.08.2014(UTC)
Сообщений: 17
Откуда: Екатеринбург

Поблагодарили: 6 раз в 4 постах
Поэкспериментировал - предположение на счет SearchHelper подтвердилось.
Для того, что бы сделать свой контент доступным для поиска необходимо создать класс-конвертер, реализующий интерфейс IObjectConverter
(+добавить атрибут [Dependency], что бы DI контейнер мог найти этот конвертер)
Цитата:

    [Kooboo.CMS.Common.Runtime.Dependency.Dependency(typeof(IObjectConverter), Key = "TYPE_NAME")]
    public class CategoryConverter : IObjectConverter {...}

и в CRUD обновлять индексы при добавлении/изменении контекста
Цитата:
SearchHelper.OpenService(Repository.Current).Add(model);


Попозже опишу более понятно с примером.
1 пользователь поблагодарил syberside за этот пост.
Ella оставлено 22.09.2014(UTC)
Ella Offline
#13 Оставлено : 22 сентября 2014 г. 21:51:25(UTC)

Ранг: Advanced Member

Группы: Registered, Тестеры
Зарегистрирован: 07.05.2012(UTC)
Сообщений: 241
Откуда: Россия

Сказал(а) «Спасибо»: 25 раз
Поблагодарили: 67 раз в 61 постах
Спасибо.
Кстати к вопросу о поиске. На офф. форуме парень из Хорватии задал вопрос по схожей теме
syberside Offline
#14 Оставлено : 23 сентября 2014 г. 12:12:30(UTC)
Ранг: Member

Группы: Registered, Тестеры
Зарегистрирован: 25.08.2014(UTC)
Сообщений: 17
Откуда: Екатеринбург

Поблагодарили: 6 раз в 4 постах
Ella написал:
Спасибо.
Кстати к вопросу о поиске. На офф. форуме парень из Хорватии задал вопрос по схожей теме


Я ему ответил, разобрались BigGrin
Лента RSS  Лента Atom
Пользователи, просматривающие эту тему
Guest (3)
Быстрый переход  
Вы не можете создавать новые темы в этом форуме.
Вы не можете отвечать в этом форуме.
Вы не можете удалять Ваши сообщения в этом форуме.
Вы не можете редактировать Ваши сообщения в этом форуме.
Вы не можете создавать опросы в этом форуме.
Вы не можете голосовать в этом форуме.