Интеграция Java Lucene с .Net
Вопрос
У меня есть настройки nutch и lucene для сканирования и индексирования некоторых сайтов, и я хотел бы использовать веб-сайт .net вместо сайта JSP, который поставляется с nutch.
Может ли кто-нибудь порекомендовать некоторые решения?
Я видел решения, в которых на индексном сервере работало приложение, к которому сайт .Net использовал удаленное подключение.
Очевидно, что скорость имеет значение, так может ли он по-прежнему работать хорошо?
Редактировать: может ли NHibernate.Search работать для этого?
Редактировать: В итоге мы остановились на индексных серверах Solr, используемых нашим сайтом ASP.net, с Солрнет библиотека.
Другие советы
Если из других ответов не совсем понятно, Lucene.NET и Lucene (Java) используют один и тот же формат индекса, поэтому вы сможете продолжать использовать существующие (на основе Java) механизмы для индексирование, а затем используйте Lucene.NET внутри своего веб-приложения .NET, чтобы запрос индекс.
От сайт инкубатора Lucene.NET:
В дополнение к порту API и классов к C#, алгоритм Java Lucene перенесен в C# Lucene.Это означает, что индекс, созданный с Java Lucene обратная совместимостьс C# Lucene;оба в чтении, написании и обновлении.Фактически Индекс Lucene можно одновременно поиск и обновлен с использованием процессов Java Lucene и C# Lucene
Я тоже работаю над этим.
http://today.java.net/pub/a/today/2006/02/16/introduction-to-nutch-2.html
Кажется, вы можете отправить свой запрос в Nutch и получить обратно результаты RSS.
редактировать:
Сегодня это работает в форме Windows в качестве доказательства концепции.Два текстовых поля (поиск и запрос), одно для URL-адреса сервера и одно для запроса.Одно представление сетки данных.
private void Form1_Load(object sender, EventArgs e)
{
searchurl.Text = "http://localhost:8080/opensearch?query=";
}
private void search_Click(object sender, EventArgs e)
{
string uri;
uri = searchurl.Text.ToString() + query.Text.ToString();
Console.WriteLine(uri);
XmlDocument myXMLDocument = new XmlDocument();
myXMLDocument.Load(uri);
DataSet ds = new DataSet();
ds.ReadXml(new XmlNodeReader(myXMLDocument));
SearchResultsGridView1.DataSource = ds;
SearchResultsGridView1.DataMember = "item";
}
Попал сюда в поисках сравнения SolrNet и SolrSharp, просто решил оставить здесь свои впечатления.
Похоже, что SolarSharp — мертвый проект (давно не обновлялся), поэтому единственный вариант — SolarNet.
Надеюсь, это кому-то поможет, я бы оставил комментарий к принятому ответу, но у меня пока недостаточно репутации :)
Вместо использования Solr я написал индексатор на основе Java, который выполняется в задании cron, и веб-службу на основе Java для выполнения запросов.На самом деле я индексировал не столько страницы, сколько различные типы данных, которые сайт .net использует для создания страниц.Таким образом, на самом деле существует 4 разных индекса, каждый из которых имеет разную структуру документа, и все они могут быть запрошены примерно одним и тем же способом (скажем:пользователи, посты, сообщения, фотографии).
Определив XSD для ответов веб-службы, я смог создать классы в .net и Java для хранения представления документов.Веб-сервис в основном выполняет запрос по правильному индексу и заполняет XML-ответ ответа на основе обращений.Клиент .net анализирует это обратно на объекты.Также имеется json-интерфейс для любого клиентского JavaScript.
Почему бы не перейти с Java Lucene на версию Dot Net.Конечно, это инвестиции, но в основном это упражнение по замене классов.Последнее, что вам нужно, — это больше слоев, которые не несут никакой ценности, кроме склеивания.Меньше клея и больше вещей — вот к чему вам следует стремиться…